如何创建vue项目
小编给大家分享一下如何创建vue项目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
青云谱ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
1、创建一个vue项目步骤(windows环境下)。创建vue项目前,检查系统是否具备创建项目的条件(是否已经安装好了node.js、webpack、vue-cli)。cmd打开终端。
1.1 如果还没安装node.js, 则先安装node.js ,安装完成后,查看node版本
node -v
1.2 安装淘宝镜像, 安装完成后查看npm版本:npm -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
1.3 安装webpack
npm install webpack -g
1.4 安装vue全局脚手架,vue-cli2.x使用 npm install -g vue-cli , vue-cli3.x使用 npm install -g @vue/cli 安装, 查看vue版本: vue -V
npm install -g vue-cli
或
npm install -g @vue/cli
1.5 准备工作做好了,开始正式创建vue项目, 创建vue项目可以选择两种方式。下面的my_vue_pro是vue项目名字
vue init webpack my_vue_pro
或
vue create my_vue_pro
vue init 是vue-cli2.x的初始化方式,可以使用github上面的一些模板来初始化项目,webpack是官方推荐的标准模板名。vue-cli2.x项目向3.x迁移只需要把static目录复制到public目录下,老项目的src目录覆盖3.x的src目录。 vue create 是vue-cli3.x的初始化方式,目前模板是固定的,模板选项可自由配置,创建出来的是vue-cli3的项目,与vue-cli2项目结构不同,配置方法不同,具体配置方法参考官方文档。
如果vue版本还是2.x, 从vue-cli2.x升级到最新版:先执行卸载: npm uninstall -g vue-cli , 再安装最新版 npm install -g @vue/cli
1.6 cd进入项目
cd my_vue_pro
1.7 添加需要的依赖包,比如添加vue路由vue-router依赖包,可以使用 npm install vue-router , 或者 vue add router
npm install vue-router
或
vue add router
1.8 安装所有依赖包, npm install 。卸载依赖包: npm uninstall xxx
cnpm install
1.9 运行项目,查看package.json文件中的scripts脚本中的运行方式, npm run dev 或 npm run serve
npm run serve
2、vue路由vue-router解说
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:
嵌套的路由/视图表
模块化的、基于组件的路由配置
路由参数、查询、通配符
基于 Vue.js 过渡系统的视图过渡效果
细粒度的导航控制
带有自动激活的 CSS class 的链接
HTML5 历史模式或 hash 模式,在 IE9 中自动降级
自定义的滚动条行为
为了加深对路由的理解,在安装vue-router包后,如果项目自动生成了router.js, 先删除,我们手动来写一个router.js。创建router.js后,再新增加2个vue页面,命名pageA和pageB,如下图:
其中router.js代码
import Vue from 'vue' import Router from 'vue-router' //自定义页面 import PageA from './views/PageA' import PageB from './views/PageB' //安装路由到vue Vue.use(Router) const routes = [ { path: '/', redirect: '/pageB' //重定向,设置默认进入pageB页面 }, { //动态路径参数,以冒号开头,如果有多个参数则继续往后面追加 path: '/pageA/:id/:name', name: 'pageA', component: PageA }, { path: '/pageB', name: 'pageB', component: PageB } ] export default new Router({ //mode: 'hash', //默认hash模式,hash模式有#;另外还有一种history模式,没有#符号 routes })
main.js是vue项目的入口脚本,在这里引入router.js, 传入路由配置。
import Vue from 'vue' import App from './App.vue' import router from './router.js' Vue.config.productionTip = false new Vue({ router, //key名字必须命名为router render: h => h(App) }).$mount('#app')
2.1 路由视图
在项目启动模板页App.vue上面有个
而
pageA | pageB
我们打印this.$route变量,看到如上图右边部分内容:
命名路由pageA
在设置页面路由时,如果增加一个props属性,并设置为true, 则在页面中可以直接拿到参数,不需要通过this.$route.params来取参数。比如router.js中部分代码:
{ path: '/pageC/:id/:name', name: 'pageC', props: true, //设置props属性为true, 则可以在PageC页面中直接取参数 component: PageC }
佛山 -- 黄飞鸿,from PageC
男儿何不带吴钩,收取关山五十州
路径参数id: {{this.id}}, name: {{this.name}}
{ path: '/pageB', name: 'pageB', component: PageB, meta: { isOK: true, type: 9 }, children: [ { path: 'pageC/:id/:name', component: PageC, props: true, //设置props属性为true, 则可以在PageC页面中直接取参数 name: 'subPageC', meta: { requiresAuth: true, id: 51666 }, //自定义数据 } ] },
一片云 -- 罗小虎,from PageB
千磨万击还坚劲,任尔东南西北风
2.5 编程式的导航。
// 字符串 router.push('home') // 对象 router.push({ path: 'home' }) // 命名的路由 router.push({ name: 'user', params: { userId: '123' }}) // 带查询参数,变成 /register?plan=private router.push({ path: 'register', query: { plan: 'private' }}) /*注意:如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种情况。 取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path: */ const userId = '123' router.push({ name: 'user', params: { userId }}) // -> /user/123 router.push({ path: `/user/${userId}` }) // -> /user/123 // 这里的 params 不生效, 即编程式导航如果提供了path, 则路径参数必须写入path中。而查询参数可以不写入 router.push({ path: '/user', params: { userId }}) // -> /user
router.go(n)的使用,这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)。
// 在浏览器记录中前进一步,等同于 history.forward() router.go(1) // 后退一步记录,等同于 history.back() router.go(-1) // 前进 3 步记录 router.go(3) // 如果 history 记录不够用,那就默默地失败呗 router.go(-100) router.go(100)
{ path: '/pageD', name: 'pageD', components: { //演示命名视图 default: PageD, tanA: PageA, tanB: PageB } }
2.7 路由模式。默认路由模式是hash模式,即地址栏中域名后带有#符号(此 hash 不是密码学里的散列运算)。它的特点
路由模式还有另外一种模式就是history模式,这种模式是没有#符号的,符合我们平常的使用习惯。这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。
export default new Router({ //mode: 'hash', //默认hash模式,hash模式有#;另外还有一种history模式,没有#符号 mode: 'history', //history模式,没有#符号 routes })
所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。
“导航”表示路由正在发生改变,vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航,从而达到控制导航走向。有多种机会植入路由导航过程中:全局的,单个路由独享的,或者组件级的。
import router from './router.js' Vue.config.productionTip = false //全局守卫 //beforeEach, 全局前置守卫,当一个导航触发时,全局前置守卫按照创建顺序调用。 router.beforeEach((to, from, next)=>{ console.log("....beforeEach....") //数据校验时 // if (to.fullPath === '/home'){ // next('/login') // } if (to.path != '/login'){ next(); } else { setTimeout(()=>{ next(); }, 1000) } console.log(to) console.log(from) console.log(next); })
当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航所在所有守卫resolve完之前一直处于等待中。
确保要调用 next 方法,否则钩子就不会被 resolved。
3.2 全局解析守卫:router.beforeResolve ,这和 router.beforeEach 类似,区别是在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用
3.3 全局后置钩子:router.afterEach ,然而和守卫不同的是,这些钩子不会接受 next 函数也不会改变导航本身:
router.afterEach((to, from)=>{ console.log("....afterEach....") console.log(to) console.log(from) })
3.4 路由独享守卫:beforeEnter ,参数和全局前置守卫一样,执行顺序在全局前置守卫之后,在全局解析守卫之前。router.js中部分测试代码:
{ //动态路径参数,以冒号开头,如果有多个参数则继续往后面追加 path: '/pageA/:id/:name', name: 'pageA', component: PageA, //路由独享的守卫 beforeEnter: (to, from, next) => { console.log(".....路由独享的守卫...beforeEnter...") console.log(to) console.log(from) console.log(next) next(); } },
3.5 组件内路由守卫。进入组件时、组件路径参数变化时,离开组件时分别监听。
beforeRouteEnter (to, from, next) { next(vm => { // 通过 `vm` 访问组件实例 }) }
beforeRouteLeave 这个离开守卫通常用来禁止用户在还未保存修改前突然离开。该导航可以通过 next(false) 来取消。
beforeRouteLeave (to, from , next) { const answer = window.confirm('Do you really want to leave? you have unsaved changes!') if (answer) { next() } else { next(false) } }
----------------------- 导航守卫调用步骤记录 ---------------
以上是“如何创建vue项目”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
当前标题:如何创建vue项目
网站链接:http://scpengxi.com/article/gdoiph.html