美文网首页IT编程转载的~vuevue-cli
Vue2.0史上最全入坑教程(中)—— 脚手架代码详解

Vue2.0史上最全入坑教程(中)—— 脚手架代码详解

作者: 诺奕 | 来源:发表于2017-03-01 17:09 被阅读43498次
书接上文我们说道,如何利用脚手架(vue-cli)构建一个vue项目,本回书我们一起来学习分析下代码。

回顾下创建后的项目目录:


说明:在*.vue文件,template标签里写html代码,且template直接子级只能有一个标签。style标签里写样式,script里面写js代码
a. 页面:index.html

这个没什么好说的就是一个简单的html页面,这里id='app',是为后面的设置vue作用域有关的。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>datura</title>
  </head>
  <body>
    <div id="app"></div>  
    <!-- built files will be auto injected -->
  </body>
</html>
b. 文件:Hello.vue
<template>
  <div class="hello">
    <h1>{{ msg }}</h1>  <!-- 这里是展示数据中的  -->
    <h2>Essential Links</h2>
    <ul>
      <li><a href="https://vuejs.org" target="_blank">Core Docs</a></li>
      <li><a href="https://forum.vuejs.org" target="_blank">Forum</a></li>
      <li><a href="https://gitter.im/vuejs/vue" target="_blank">Gitter Chat</a></li>
      <li><a href="https://twitter.com/vuejs" target="_blank">Twitter</a></li>
      <br>
      <li><a href="http://vuejs-templates.github.io/webpack/" target="_blank">Docs for This Template</a></li>
    </ul>
    <h2>Ecosystem</h2>
    <ul>
      <li><a href="http://router.vuejs.org/" target="_blank">vue-router</a></li>
      <li><a href="http://vuex.vuejs.org/" target="_blank">vuex</a></li>
      <li><a href="http://vue-loader.vuejs.org/" target="_blank">vue-loader</a></li>
      <li><a href="https://github.com/vuejs/awesome-vue" target="_blank">awesome-vue</a></li>
    </ul>
  </div>
</template>
<script>
export default {
  name: 'hello',   /* 这个name暂时不知道用啥用,根据官方文档说的是方便排错的 */
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'   /* 这里是数据,一定记住数据一定要放data中然后用return返回 */
    }
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>   /*  scoped的意思是这里的样式只对当前页面有效不会影响其他页面,还有可以设置lang="scss"就是支持css预编译,也就是支持sass或者less  */
h1, h2 {
  font-weight: normal;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>

c. 文件:App.vue
<template>
  <div id="app">
    ![](./assets/logo.png)
    <router-view></router-view>   <!--  这里是用来展示路由页面内容的,如果想用跳转就用<router-link to='xxx'></router-link> -->
  </div>
</template>
<script>
export default {
  name: 'app'
}
</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>
d. 文件:main.js

这个js文件是主页面配置的主入口。主要是利用es6的模块化引入模块。

import Vue from 'vue'   /* 这里是引入vue文件 */
import App from './App'  /* 这里是引入同目录下的App.vue模块 */
import router from './router'  /* 这里是引入vue的路由 */

/* eslint-disable no-new */
new Vue({
  el: '#app',  /* 定义作用范围就是index.html里的id为app的范围内 */
  router,    /* 引入路由 */
  template: '<App/>',   /* 给Vue实例初始一个App组件作为template 相当于默认组件 */
  components: { App }  /* 注册引入的组件App.vue */
})

e. 文件:index.js

这个是配置路由的页面

import Vue from 'vue'   /* 引用vue文件 */
import Router from 'vue-router'  /* 引用vue路由模块,并赋值给变量Router */
import Hello from '@/components/Hello'  /* 英文Hello.vue模版,并赋值给变量Hello,这里是“@”相当于“../” */
Vue.use(Router)   /* 使用路由 */
export default new Router({
  routes: [     /* 进行路由配置,规定“/”引入到Hello组件 */
    {
      path: '/',
      name: 'Hello',  /* 这里的name同上,暂时没发现有什么意思 */
      component: Hello   /* 注册Hello组件 */
    }
  ]
})
说明:如果需要增加组件那就在components文件下定义xx.vue文件并编写代码即可,如果需要配置路由就要进行在index.js进行路由“路径”配置,还需要点击跳转就要用到<router-link></router-link>标签了。至于后面的过滤器啊,事件啊,钩子函数,ajax等等之类的和vue1.0差不多就不一一叙述,但是会在用到的时候简单说明一下的。我会用下面大约俩个章节来展示一个简单的“小项目”。

Vue2.0史上最全入坑教程(下)

相关文章

网友评论

  • cdab23368921:@/components/Hello,这里的@是指src目录?
    诺奕:@indra_95f1 在 vue/build/webpack.base.conf.js 下面,resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
    'vue$': 'vue/dist/vue.esm.js',
    '@': resolve('src'),
    'common': resolve('src/common'),
    'components': resolve('src/components'),
    'pages': resolve('src/pages')
    }
    }
  • af8f9f12c8a1:楼主你好厉害啊,这里的注释写的好详细啊
    诺奕:@Debug_76c5 谢谢支持
  • 80317c43056e:根据教程做的,cnpm run dev后能看到,自己手动输入localhost:8080能够看到页面。但是build目录下没有dev-server.js 和 dev-client.js 两个文件,为什么?
    诺奕:@db168 这个是因为本文的脚手架版本为2.8.1,现在新安装的是2.9.1。在新版本中去掉了这俩文件。
  • 5a4f044975e3:(Emitted value instead of an instance of Error) <list v-for="item in items">: component lists rendered with v-for should have explicit keys. See https://vuejs.org/guide/list.html#key for more info.
    为什么运行的时候这个这个错误 是请求出了问题了吗:disappointed_relieved:
    5a4f044975e3:@datura_lj 嗯嗯 是我手打的时候打错了 自的问题 谢谢
    诺奕:不是请求有问题,这个应该是一个警告,意思就是你需要增加一个唯一的key,来进行标识。
  • 5fc6b14e544f:求问大神,

    1,为啥我的index.js内容和你的不一样? 是按照你的步骤走下来的呀

    var path = require('path')

    module.exports = {
    build: {
    env: require('./prod.env'),
    index: path.resolve(__dirname, '../dist/index.html'),
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    productionSourceMap: true,
    ........

    2,我的main.js多了一句话: Vue.config.productionTip = false
    诺奕:@hery_7296 嘿嘿!大家一起加油,共同进步!!
    5fc6b14e544f:@datura_lj 非常感谢您的耐心回复! 我的第一个问题也发现为啥了,你的index.js文件是在src/router下,我找的是comfig下的index.js。 祝你越来越牛!
    诺奕:@hery_7296 这个和你的vue-cli的版本有关系:Vue.config.productionTip = false 是关闭生产模式下给出的提示的。不影响开发。谢谢支持!祝你早日成功!
  • 6d4a0d6969d6:你好,想问问个问题,我在hello.vue里面修改了内容,可页面上没有变。把hello.vue里面全删掉,页面上还有内容。这是为啥呢?
    诺奕:@禅秋 没懂啥意思
    6d4a0d6969d6:@datura_lj 我审查元素里面的内容没变,重启服务器之后整个页面的内容都没了,并不是我改的样式:joy:
    诺奕:这个你手动刷新一下页面看下效果,也可以用审查元素查看下。如果是缓存(hot没生效),那就重启下服务吧。
  • OBKoro1:请问路由里面的path: '/'是什么意思?
    诺奕: @OBKoro1 以 / 开头的嵌套路径会被当作根路径。 注意配置子路由一般不写/
    OBKoro1:@datura_lj 不能不写,我这里去掉的话,就会出现报错、报错内容是:——————Uncaught Error: [vue-router] "path" is required
    诺奕: @OBKoro1 那个就是当前的意思,可以不写,看个人习惯

本文标题:Vue2.0史上最全入坑教程(中)—— 脚手架代码详解

本文链接:https://www.haomeiwen.com/subject/wqaqgttx.html