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里的模块。

  以上

原文地址:https://www.cnblogs.com/dongwy/p/6738634.html