• Vue学习从入门到精通(一)(转)


    Vue学习从入门到精通(一)

      最近公司由于业务拓展,需要进行小程序相关的开发,本着朝全栈开发者努力,决定学习下Vue,去年csdn送了一本《Vue.js权威指南》,那就从这本书开始练起来吧。哟吼。

    一,环境搭建

    今天主要说一下如何搭建环境,以及如何运行。

    1,npm安装

    brew install npm

    如果brew没有安装的话,大家可以brew如何安装哦,这里就不再详细说明了。

    2,安装vue-cli

    vue-cli是用node编写的命令行工具,因此需要进行全局安装。

     npm install -g vue-cli

    注:node的版本为4.x,及5.x及以上 
    安装完成后,查看版本

    vue -V
    • 1   brew install npm

    二,创建并运行项目

    环境安装后,我们可以使用vue-cli命令快速创建一个webpack构建的项目

    vue init web pack helloworld

    我在当前目录创建了一个helloworld的项目。然后我执行

    cd helloworld//跳转到该目录

    执行下面的命令来安装依赖

    npm install

    我们会看到当前目录生成了很多的文件,其中我们主要是在src这个文件夹下进行相关的操作的。执行如下命令,启动项目

    nom run dev

    打开浏览器,输入http://localhost:8080可以看到系统默认生成的页面了。

    这里写图片描述 
    本来是有一个Vue的图标的,被我给去掉了,方便后面的调试。

    三,Vue.js 权威指南的第一个demo

    一切准备就绪,接下来我们开始练习《Vue.js权威指南》这本书中的demo,在网上找了许久,也没有找到书中的源码,很是遗憾啊。第一个demo的代码保存为jk.vue 
    我这边将第一个demo的代码如下:

    
    <template>
        <div id = "didi-navigator">
            <ul>
                <li v-for="tab in tabs">
                    {{tab.text}}
                </li>
            </ul>
        </div>
    </template>
    <script>
    export default {
    name:'HelloWorld',
    data(){
        return {
       tabs:[
            {text: '巴士'},
            {text: '快车'},
            {text: '专车'},
            {text:'顺风车'},
            {text:'出租车'},
            {text:'代驾'}
            ]
      }
    }
    }
    </script>
    

    大家可以看到我这里和书上不太一样,主要就是我这里app.js已经创建过了,所以我这边没有必要执行new Vue这些操作了,具体原因后续会详细说明。 
    App.vue中代码如下:

    <template>
      <div id="app">
        <HelloWorld/>
      </div>
    </template>
    
    <script>
    import HelloWorld from './components/jk'
    
    export default {
      name: 'App',
      components: { HelloWorld }
    }
    </script>
    
    <style>
    #app {
      font-family: 'Avenir', Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-align: center;
      color: #2c3e50;
      margin-top: 60px;
    }
    </style>
    

    由于style还有学到,大家不要介意样式不好看啊。嘿嘿 
    运行结果如下:这里写图片描述

    更多优质文章,可以微信扫码关注: 
    这里写图片描述

    vue 从入门到精通(一)

     

    很早之前就想开一系列有关vue的博客,奈何太忙了,哈哈(爱信不信)。。。刚刚收到消息vue2.5发布了,哎!还是应该加快一下步伐,要不就与社会脱节了。这次采用小步慢跑的形式一点一点总结vue,第一篇先说一些理论知识吧,总要有个印象,后面随之学习的深入,慢慢就会领悟。

    1、首先,vue是什么?

    我们看官网上的介绍:vue.js  是一套构建用户界面的渐进式js框架。那么什么叫渐进式框架呢?所谓渐进式就是一步一步的用嘛,比如你只想在页面上渲染一些简单数据,那你只用它的核心代码就好。如果你想更进一步用到组件,那你需要用vue的组件系统。如果项目更大,那你需要用到路由啊,构建工具等等。项目需要哪块就用哪块,这样自底向上增量开发的设计,加上与单文件组件和 Vue 生态系统支持的库结合,使得Vue 也完全胜任复杂的单页应用程序,而且上手也很容易了。

    2、vue的两个核心点

    介绍核心点之前我们先写个小例子吧。

    页面中引入vuejs ,可以去官网上下载开发版本,也可以采用CDN方式直接引入 <script src="https://cdn.jsdelivr.net/npm/vue"></script> 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <!DOCTYPE html> 
    <html> 
        <head> 
            <meta charset="UTF-8"
            <title>vuejs</title> 
            <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        </head> 
        <body>
            <div id="app">
                {{ content }}
            </div>
            <script>
                let data = {
                    content:"Hello World!"
                }
                var vm = new Vue({
                    el:"#app",
                    data:data
                });
            </script>
        </body> 
    </html> 

    最好,还是手动敲一遍吧,你就会知道你会犯多少低级错误。在浏览器中查看实例,打开控制台,输入vm.content = "Hi, vue!",回车页面立马输出变为HI,vue! 这说明数据改变,页面也自动改变。那就引出了Vue的第一个核心点——响应式的数据绑定。是不是很AngularJS很像?他两的实现原理不同:

    脏值检查(angular.js)

    思路:angular.js 是通过脏值检测的方式比对数据是否有变更,来决定是否更新视图,最简单的方式就是通过 setInterval() 定时轮询检测数据变动,angular只有在指定的事件触发时进入脏值检测,大致如下:

    • DOM事件,譬如用户输入文本,点击按钮等。( ng-click )
    • XHR响应事件 ( $http )
    • 浏览器Location变更事件 ( $location )
    • Timer事件( $timeout , $interval )
    • 执行 $digest() 或 $apply()

    数据劫持(Vue.js)

    思路: vue.js 则是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

    具体怎么使用Object.defineProperty()实现响应式数据绑定,可以看这里: http://www.jb51.net/article/106484.htm

    第二个核心点——组合的视图组件 

      vue写页面时,我们可以头部一个组件,侧边一个组件,中间内容区域另外一个组件。vue将我们的页面映射为组件树。这样做组件可重用,好处很多。

     3、虚拟DOM

    首先我们定义的模板(无论是html模板,字符串模板还是render函数定义的模板),编译调用内部的渲染函数(createElement)形成图二的数据结构,经过render生成虚拟DOM树,这个虚拟的DOM树存在内存中,经过内部的编译器最后形成真实的DOM。

     

    那么虚拟DOM有什么好处呢?我们知道运行js很快,但是大量操作DOM就会很慢,我们在更新一个元素的值后,经常要刷新整个DOM,这样造成了资源的浪费。有了虚拟DOM,当某个DOM节点的属性值发生变化后,只更新这一小块的节点,这样大大提高了性能。虚拟DOM这块,还有好多算法,有机会再开博客总结,自己可以先研究一下。

    4、MVVM模式

    M 代表数据模型,V 视图,VM视图模型。我们从model层拿到数据以后,通过vm层到view视图层进行渲染,vm层帮我们帮数据进行绑定,它就是m层和v层之前的桥梁,把他两联系起来。具体到项目中,我们可以看刚才的实例:

  • 相关阅读:
    有一天人人都会变成程序猿
    mysql 假设存在id则设数据自添加1 ,不存在则加入。java月份计算比較
    做程序员的老婆应该注意的一些事情
    人类科技的发展为什么会是加速度的(TRIZ方法再推荐)
    Unity5.0 RPG角色扮演历险类游戏之 森林历险记
    linux目录对照命令——meld
    iOS --- [持续更新中] iOS移动开发中的优质资源
    【spring bean】spring中bean的懒加载和depends-on属性设置
    【spring bean】 spring中bean之间的引用以及内部bean
    【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean
  • 原文地址:https://www.cnblogs.com/LiZhongZhongY/p/10863382.html
Copyright © 2020-2023  润新知