[关闭]
@anoninz 2017-08-29T03:48:19.000000Z 字数 2690 阅读 1212

Vue-cli 使用说明

vue2 vue-cli vuex vue-router


使用 vue-cli 创建模板

  1. $ vue init webpack vue-demo
  2. // 此处开启 vue-router
  3. $ cd vue-demo
  4. $ npm install

补充插件:
babel-runtime

  1. $ npm install babel-runtime

babel-polyfill 辅助 es6 编译

  1. $ npm install babel-polyfill --save-dev
  2. // 在 main.js 顶部引入
  3. import 'babel-polyfill'
  4. // 如果按需引入的话
  5. // 在模块内按需引入
  6. const Promise = require('babel-runtime/core-js/promise')
  7. // 全局引入
  8. import 'core-js/es6/promise'

fastclick 解决 300ms 点击延迟

  1. $ npm install fastclick
  2. // 在 main.js
  3. import fastclick from 'fastclick'
  4. fastclick.attach(document.body);
  5. 会默认拦截 click 事件
  6. 如果某个元素需要 click 事件的时候,或者需要手动派发时
  7. 给这个标签增加`needsclick` class ,就不会拦截了

jQuery基本库

  1. index.html 全局引入
  2. <script src="xxx">

页面逻辑

入口网页:

index.html 通用 js 可直接在 index 引入

入口文件:

src 里面的 main.js 这个文件主要用来引入一些公共组件和整体设置

  1. // 这个模板使用 import 引入组件
  2. // 在 build/webpack.base.conf.js 中进行 webpack 的基本设置
  3. // 都是套路
  4. import 'babel-polyfill' // 引入 es6 垫片
  5. import Vue from 'vue'
  6. import App from './App'
  7. import router from './router'
  8. Vue.config.productionTip = false
  9. /* eslint-disable no-new */
  10. new Vue({
  11. el: '#app', // 钩在 index.html 的 #app 上
  12. router, // 传入 vue-router
  13. template: '<App/>',
  14. components: { App } // 传入组件 App
  15. })

路由文件:

src/router/index.js

  1. // 前两行是套路
  2. import Vue from 'vue'
  3. import Router from 'vue-router'
  4. // 从这里开始引入组件,@ 是别名,指向 src 文件夹
  5. // 组件首字母大写
  6. import Hello from '@/components/Hello'
  7. import My from '@/components/My.vue'
  8. import Purse from '@/components/Purse.vue'
  9. import Coupon from '@/components/Coupon'
  10. // 套路
  11. Vue.use(Router)
  12. // 输出 Router
  13. export default new Router({
  14. // Router.routes 一个路由数列
  15. // 每个对象里面有path 路径 name(用来引用) component 指向已引入的组件,还可以加一些钩子
  16. routes: [
  17. { // 默认访问根路径的时候,重定向至 /my 路径
  18. path: '/',
  19. redirect: '/my'
  20. },
  21. {
  22. path: '/my',
  23. name: 'my',
  24. component: My
  25. // 组件可以是一个类似树状的结构
  26. // children 属性是一个数组,可以放多个子路由
  27. // 需要在 My 这个组件里面放 router-view 标签来挂载子路由
  28. // 组件内编程式跳转到子组件
  29. // this.$router.push({
  30. // path: `/my/purse`
  31. // })
  32. children: [
  33. {
  34. path: ':id', // ':' 表示可以传入不同的 id 来展示不同的数据
  35. conponent: Purse
  36. }
  37. ]
  38. }
  39. ],
  40. // Router.beforeEach 钩子函数,回头补充介绍
  41. beforeEach:((to, from, next) => {
  42. // ... 可以配置每个页面的
  43. next(function(vm))
  44. })
  45. })

路由的跳转

  1. <router-link tag="div" :to="{ name: '', params: {} }" class="">
  2. </router-link>

默认会渲染成一个<a>标签
tag 属性可以指定渲染成什么样子的标签可以加 class 样式,
to属性对应一个对象:
name 对应 routes 里面的路由的 name
params 可以传入一个对象,可以在子组件的$route.params获取
当这个 <router-link>被激活时,vue 会给这个标签加一个router-link-activeclass,可以写样式来标记这个标签

主要用来操作的组件 App.vue

  1. <template>
  2. <div id="app">
  3. <keep-alive>
  4. <router-view></router-view>
  5. </keep-alive>
  6. </div>
  7. </template>
  8. <script>
  9. export default {}
  10. </script>
  11. <style lang="css" scoped>
  12. </style>

大部分组件都在这里引入

对于单个组件ComponentA 的使用

1.在 script 内引入
import ComponentA from './src/component/ComponentA.vue'
2.注册组件

  1. export default {
  2. components: {
  3. ComponentA
  4. }
  5. }

3.在模板(<template></template>)里面使用

  1. <component-a><component-a>

router-view 的注意事项

单独使用 <router-view> 标签时,切入组件一次,会调用 created() 一次,切出时调用 destroy() 一次。切出再切入,组件的生命周期会重新走一遍,重新渲染dom重新加载数据。
<keep-alive></keep-alive>将其包起来,就可以将dom 缓存在内存中,切换时不会出现闪屏。切出的时候会调用 destroy(),这时要记得清理组件的计时器。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注