zoukankan      html  css  js  c++  java
  • Vue初步模块开发

      最近一段时间,突然对VUE产生了兴趣(主要是不管在哪都能看到关于VUE的东西╮( ̄▽ ̄")╭),就想着搞一个看看,顺便解决一下从0到1的问题,VUE的一些操作语法我之前是了解一些的(主要是通过angular),正在着急怎么下手的时候,突然发现了 vue-cli 这个东西,大概观察之后,发现使用和nodeJs的exporess很类似,不过这都不是重点,重点是,它可以帮我快速搭建VUE开发脚手架,第一步找一个酷酷的文件夹,然后在当前目录打开CMD,安装vue-cli ,因为npm安装速度太慢,我们使用cnpm来进行安装

    cnpm install -g vue-cli
    

      这里加了 -g,所以你就算你不是在那个酷酷的文件夹里打开的CMD,也是一样的。

      使用npm安装cnpm

    npm install -g cnpm --registry=https://registry.npm.taobao.org
    

      vue-cli安装成功之后,就可以试着搞一搞事情。

      一,使用vue-cli创建项目目录

      在你选定的文件夹内,打开CMD,输入

    vue init webpack my-first-vue
    

      你会看到一连串问题,

      

      稍微有点用的(看的懂的)我也给出了解释,重点是 当你全部选择完了之后,项目文件的已经到位了,点开my-first-vue之后,发现

      

     

       很多文件,一应俱全,省去了很多麻烦的事情(比如给文件夹起名字),当然这还没完,要知道,这可是前端,没点依赖怎么能行,接下来,点击进入你所创建的项目文件夹,或cd 项目名称,同样在CMD中输入  

    cnpm install
    

      然后会对你得package.js文件中列出的所有依赖进行下载,这时候,会多出来一个 node_modules 文件夹出来,这里面就是你所需要的所有依赖(没事别去点开看)。

      到这一步,vue-cli已经完成了安装和使用,如何检验呢?

      在项目目录里打开CMD 输入

    npm run dev
    

      不报错的话,恭喜你!你已经完成了,同时会自动帮你打开浏览器 http://localhost:8080/#/ 

      于是你会看到:

     

     二,模块的开发

      当然vue的强大,不只是搭建个脚手架,而是让人激动的模块化开发,什么是模块开发,顾名思义,我就不多说了,

      想了解的移步

        https://juejin.im/entry/55f77eb460b28e6a6f0f4f86

      就着刚才vue-cli赠送的文件,我们分析一下,这一个一个的模块,是如何拼在一起的

      

      使用vue-cli开发vue的时候,大部分开发是在src文件夹内完成的,而src文件夹内,分为三个文件夹,分别是 assets(资源),components(组件)和router(路由)

      我在开发的时候,也最好按照这样的分类来存放JS,CSS,IMG,而APP.vue 和main.js的关系,先不关心;

      不过在开发模块之前,要求最好了解ES6的语法,和webpack and vue的简单语法

      涉及ES6的语法并不多,重要的有两个 

        1.import XXX from './xxx';

        2.export default XXX;

      这是模块化的精髓所在,类似node里面 var xxx = require('./xxx'); 和 module.exports = xxx;

      简而言之,就是export default 后面的,就是该文件返回的对象,函数,变量或模块;

      而import xxx from './xxx' 就是该文件,所需要的依赖;

      如果我说的这么详细(- -!)还不理解的话,可以移步ES6的介绍   http://es6.ruanyifeng.com/  

      

      如果上面的知识都OK可之后,咱们就在vue-cli的网页当中,增加一个模块;

      因为遵循每个文件就是一个模块的原则(也不知道是那个规定的)

      我在components文件夹内新建一个myComp.vue文件,来做我们新的模块;

          另外 不要使用atom开发VUE,你会觉得很恶心,别问我怎么知道了

      新建了之后,长这样:

      

     

      mycomp.vue,我是这样写的

    <template> 
     <div>
            <!-- 组件 -->
        <h1><i>{{msg}}</i></h1>
      </div>
    </template>
    
    <script>
        //JavaScript
    export default {
      name: 'comp',
      data () {
        return {
          msg: "I'm a new component"
        }
      }
    }
    
    // ES6
    // data(){ } === data : function(){ }
    </script>
    
    <style scoped>
        /*CSS*/
        h1{color:red}
    </style>

      有几个地方需要注意

      1.每个组件的HTML部分必须包括在template标签里面,而template标签在渲染DOM的时候,是不会渲染的,所以最好在template里面再嵌套一层

      2.<style scoped></style> 的作用是限制你得css,只能在本组件内使用,所以最好加上

      3.export default 出去的对象,是默认作为Vue实例参数的,所以可以作为vue实例编写

      三,模块拼接

      模块我们都有了,最重要的是完美组合在一起

      组合的方法有很多,不过我们在这里不讨论,只在乎如何组合,这里我把mycomp.vue组件增加在APP.vue组件里,

      点开APP.vue,因为组件的连接只涉及js和html,我就只展示这些

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <router-view></router-view>
      </div>
    </template>
    
    <script>
    export default {
      name: 'app'
    }
    </script>

      首先要对你得组件进行连接,方法如下

      

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <router-view></router-view>
        <mycomp></mycomp>
        <!-- 这里使用标签的写法,插入你得组件名,要和下面的import 后面的名字对应 -->
      </div>
    </template>
    
    <script>
    import mycomp from './components/mycomp'//从APP.vue 到mycomp.vue的路径(前面必须加./不加报错的哦)
    export default {
      name: 'app',
      components:{ mycomp }//这里增加一个components属性,代表所有的组件,这里的组件名称,要和import 后面的名字对应
    }
    </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>

      如此之后,打开http://localhost:8080/#/

      你会看到

      

      红色的字,就是新加上去的组件,如果是多个组件,就依次使用import进来,在components的参数当中 逗号分开,一次填写,并在html里,添加标签就可以了。

      这里有一个需要注意的地方,components:{ mycomp ,mycomp2 },和components:{ mycomp :mycomp  ,mycomp2 :mycomp2 }是等价的,前者只是简写。

      下面是插入多个模块的 代码及效果

      

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <router-view></router-view>
        <mycomp></mycomp>
        <mycomp2></mycomp2>
        <!-- 这里使用标签的写法,插入你得组件名,要和下面的import 后面的名字对应 -->
      </div>
    </template>
    
    <script>
    import mycomp from './components/mycomp'//从APP.vue 到mycomp.vue的路径(前面必须加./不加报错的哦)
    import mycomp2 from './components/mycomp2'//和mycomp的写法一样
    export default {
      name: 'app',
      components:{ mycomp ,mycomp2 }//这里增加一个components属性,代表所有的组件,这里的组件名称,要和import 后面的名字对应
    }
    </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>

      效果:

      

      红色和蓝色的字,都是插入在APP.vue里的模块。

      以上

  • 相关阅读:
    ModelViewViewModel 设计模式介绍
    Sliverlight 3 3D 游戏开发学习 第一章:光照、照相机与行为
    【翻译】WF从入门到精通(第十八章):在你的工作流中调用Web服务
    一个能设置验证信息样式的WebTextBox基本验证复合控件
    一个封装了在Ajax下弹出Alert、showModelessDialog、showModalDialog窗口的类
    【翻译】WF从入门到精通(第十一章):并行活动
    测试驱动开发入门
    【翻译】WF从入门到精通(第三章):workflow实例
    【翻译】WF从入门到精通(第九章):逻辑流活动
    关系型数据库与面向对象开发之间的矛盾:学习LINQ有感
  • 原文地址:https://www.cnblogs.com/dongwy/p/6738634.html
Copyright © 2011-2022 走看看