目录版本 环境搭建新建vue 增加ArcGIS JavaScript 包引用 拷贝资源信息页面测试版本 Vue 2 ArcGIS JavaScript 4.22 注意 ArcGIS JavaScrip
顺晟科技
2022-09-13 11:22:48
272
今天记录一下最近学习Vue
的一点心得。
Html
结构,CSS
表现,JS
行为。
Array.from(document.styleSheets).forEach(item => item.disabled = false)
前期只是为了校验表单,然后发展为动态效果开发,接着主要负责响应用户交互,现在页面数据渲染展示、交互、效果、校验等多位一体的开发方式。用一张图表示就这样的一个关系。
目前流行的前端框架都是基于Node,Npm,Yarn
的开发方式,比如Vue结合Vue-cli
工具可以方便的初始化项目,而以前的项目则是手工去新建文件,下载文件,定义项目的入口,然后组织打包方式,然后全部拷贝发布上线。
在没有npm以前,如下的JS资源:
<script src="../js/jquery-1.10.1.min.js"></script>
<script src="../js/jquery.cookie.js"></script>
<script src="../js/login.js"></script>
<script src="../js/jquery.nicescroll.js"></script>
<script src="../js/jquery.qrcode.min.js"></script>
<script src=\'../jslib/moment.min.js\'></script>
<script src=\'../js/locale/zh-cn.js\'></script>
<script src="../mobisscroll3/js/mobiscroll.custom-3.0.0-beta2.min.js"></script>
<script src=\'../plugins/layer-pc/layer.js\'></script>
所有资源插件都需要从原本不同的网站去下载,下载好之后放到项目资源目录中。随着项目的开发,时间的推移,如果本地源码被破坏修改,想重新从官网下载,但官网又更新版本了,或者官网已经失联,下载起来就比较困难。
两个问题:下载麻烦,版本管理维护比较困难。
随着Node在前端工程中大火,后来内置的NPM(Node Package Manager)
就扮演了资源统一管理这样的角色,通过本地的Package.json
管理文件名,版本号,命令行进行远程拉包的方式解决了开发当中到处找资源的窘境,他不但可以获取资源,也可以将自己编写的包或命令行程序进行发布分享。
PS: 下载最新的Node安装包进行安装,然后分别根据:node -v,npm -v
两个命令测试是否安装成功。
PS: call:node call:npm
由于业务需求的不断增大,Npm
下载了很多个包,这些包如何打包就是一个问题了。同时随着ES6
的发布,而浏览器支持又不是给力。有些资源开发时用到,但上线后又用不到,比如SCSS
相关的资源。
这时候一个神器Webpack横空出世,基本解决了前面提到的一些问题,而且还添加了很多新的想法和可能。结合cli工具,使现在的前端开发在工程化领域更加方便,开发更便捷。
其中Babel的剑走偏峰,Webpack-dev-server
的巧妙应用,各种Loader
的百花齐放,共同构筑了现代开发的宏伟基础世界,关于他们的细节故事后续有机会在分享。
Vue是专注于View层的数据双向绑定框架,核心是 MVVM(Model-View-ViewModel)
中的 VM
,也就是 ViewModel
。ViewModel
负责连接 View
和 Model
,保证视图和数据的一致性,并且能够实时相互更新,数据影响视图,视图中操作影响数据。
Object.defineProperty()
方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
<div>
<p>Hello,<span id="name"></span></p>
</div>
<script>
var user = {}
Object.defineProperty(user, \'name\', {
get: function () {
return document.getElementById(\'name\').innerHTML
},
set: function (n) {
return document.getElementById(\'name\').innerHTML = n
}
})
</script>
这段代码保存到本地,然后在控制台里边修改一下user
的属性,比如:user.name=\'shanghai\'
,看看效果。
而Vue实现有点小复杂,也是面试题必考的环节之一,所以有空的同学了解一下。
Observer
,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者Compile
,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数Watcher
,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图mvvm
入口函数,整合以上三者通过修改数据来达到更新视图的目的,比如:const User = { name: \'jikey\', age: 20 }
,对应页面上:我是Jikey
,修改:User.name = \'Tang\'
,那页面上自动变为:我是Jikey
。而如果是jQuery
时代,那得先找到dom
元素,然后在更新,如果这个属性页面上有多处,那就需要手工找到所有的进行更新。比如:$(\'.userEl1, .userEl2\').html(\'Jikey\')
等等的方式。
比如公网上有个url:http://www.jing-ui.com,输入地址栏之后:
CSS
,JS
文件。DOM
树,CSSOM
树, 将DOM,CSSOM
合并生成渲染树,计算渲染树布局,然后将布局渲染到屏幕上。只有首次发起全页面请求,后续请求服务端返回业务相关JSON数据,由浏览器Vue模板来组装HTML结构,然后渲染到屏幕上。由此可以看到,只要浏览器不帅锅,性能更好,渲染体验更好。同时也重新阐明了Vue的立场,就是前端框架,与Spring, Struts, Thinkphp这些服务端框架不一样,也不具备处理POST请求的能力,只能从拼接的url参数上取值,微信授权就是这种方式获取OpenId。
内部技术处理上主要是2种方式:
window.addEventListener("hashchange", handleHash, false)
window.addEventListener(\'popstate\', matchAndUpdate)
window.history.pushState(stateObject, title, url)
window.history.replaceState(stateObject, title, url)。
Vue是基于组件构建前端页面,多个组件上的数据必须保持同步和一致性,比如管理界面,左侧菜单的打开状态,必须在切换好的页面中保持当前目录的展开。用户头像必须在每个页面都显示同一的头像。等等。这时候就需要一个全局变量通过代码编程的方式方便的管理数据,为了与业界保持一致,采用了一定的API表明上看起来更繁琐,随着项目的增大,API更加的利于数据的管理。
全家桶构建的快速开发体系,Vue-cli初始化项目基础配置和文件结构,Vuex进行全局的数据状态管理,Vue-Router进行路由的跳转与处理。
表明上.vue像是一个新的格式,其实内部已经从开发约定层面规定了开发的入口,无论从teamplate
里边的html
,还是script
里边的js
,还是style
里边的css
,都是以一种以前熟悉的内容进行开发。
即能直接以script
的方式引入,也能以.vue的方式进行开发。
从vue
主框架到vue-router
,nuxt
,基本满足了日常的开发。
前期主要是前端基础的难点,中后期就是项目架构性能的优化和扩展维护。
包括变量类型,流程控制,事件,DOM, BOM
入手的关键字
call:es6
主要是增加变量申明,箭头函数,Promise,Async, Await的支持,增强String,Number,Function,Array,Object等的扩展还有增加模块管理Exports,Import功能。
先引入Vue主文件,组件文件,然后寻找一个适当的容器装载Vue渲染后的结果。
id为app的容器元素。
引入打包之后的dist文件。
HTML5 History 模式
结合Vue.js devtools, Chrome Debugger调试。
SSR
渲染框架支持工具Nuxt
09
2022-11
09
2022-11
09
2022-11
09
2022-11
19
2022-10
19
2022-10