zoukankan      html  css  js  c++  java
  • Vue的项目搭建及请求生命周期

    Vue的项目搭建及请求生命周期

    我们来了解一哈Vue-CLI项目的搭建以及其生命周期是怎样的.

    Vue-CLI的项目搭建

    环境搭建

    首先,我们在安装vue的环境的时候采用的是node的环境中的NPM安装,NPM安装能够很好的和很多模块打包使用,且安装也非常方便.所以我们先安装node,去node的官网

    http://nodejs.cn/download/

    下载安装包之后安装完成即可,然后我们需要安装cnpm,这是一个比npm安装更快的工具,指令如下

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

    然后我们就可以安装脚手架,也就是我们需要的Vue-CLI

    cnpm install -g @vue/cli
    

    如果以上两步安装有问题的话,我们可以清除掉已经安装的npm缓存,再重新执行以上两步,清缓存指令如下:

    npm cache clean --force
    

    项目创建

    项目创建的流程借鉴于,链接:https://www.jianshu.com/p/c7df292915e7

    当我们正确的完成了以上环境搭建之后,就可以开始创建我们的Vue项目啦.指令也非常简单.

    在cmd窗口中,我们cd到我们想要创建项目的目录,然后用

    vue create 项目名
    

    就可以创建我们的项目啦,当然,下面简要说明会出现的几个选项

    # 创建命令输入完成回车之后,有两个选项
    default (babel, eslint) 	默认套餐,提供 babel 和 eslint 支持
    Manually select features 	自己去选择需要的功能,提供更多的特性选择
    
    # 如果选择第二项,会出现八个功能特性供我们选择,我们可以使用空格键选中,最后用Enter确认
    TypeScript 					支持使用 TypeScript 书写源码。
    Progressive Web App (PWA) 	Support PWA 支持。
    Router 						支持 vue-router 。
    Vuex 						支持 vuex 。
    CSS Pre-processors 			支持 CSS 预处理器。
    Linter / Formatter 			支持代码风格检查和格式化。
    Unit Testing 				支持单元测试。
    E2E Testing 				支持 E2E 测试。
    
    # 上述选项确认之后,会出现
    Use class-style component syntax?(Y/n)	意思是是否使用class风格的写法,推荐使用,选y
    
    # 然后就是
    Use Babel alongside TypeScript for auto-detected polyfills?,默认选Y就好
    
    # 还有,这里是三选一,是选择项目里需要支持哪一种动态样式语言,这里有三个选项,我们选LESS
    Pick a CSS pre-processor...
    SCSS/SASS
    LESS
    Stylus
    
    # 选择单元测试工具,选jest就好,现在最好用
    Pick a unit testing solution:Jest
        
    # 选择配置文件的位置,可以自己指定,或者是放在默认的package.json里面
    Where do you prefer placing config for Babel ,PostCSS,ESLint,etc.?
    In dedicated config files		# 手动指定位置
    In package.json					# 默认位置
    
    # 是否把这些配置项保存起来,以便于下次用,怎么选都可以
    Save this as a preset for future projects?
    
    # 选择默认镜像,在国内的话,用淘宝就好,输入Y就行
    Your connection to the default npm registery seems to be slow,
    Use https://registry.npm.taobao.org for faster installation?
    

    当我们完成以上配置之后,就可以运行该项目了,指令

    num run serve	# 运行项目,ctrl+c可以停止
    

    当然我们还是推荐用pycharm来运行和调试该项目,方便排错,以及项目的打包和上线.

    pycharm运行Vue项目

    1. 首先我们用pycharm来open我们创建的这个vue的项目文件夹,然后在上方选择 Add Configuration

    2. 左上角有个加号,点开之后选择下面的npm

    3. 这时候如果前面npm的安装没有问题的话,node的路径和npm的路径是已经配置好的,我们只需要修改自己的项目名称,以及Scripts框里面输入serve就可以了

    配置完以上三步,就可以直接运行该项目了.

    Vue项目的大体结构

    Vue项目的目录大致如下

    ├── v-proj
    |	├── node_modules  	// 当前项目所有依赖,一般不可以移植给其他电脑环境
    |	├── public			
    |	|	├── favicon.ico	// 标签图标
    |	|	└── index.html	// 当前项目唯一的页面
    |	├── src
    |	|	├── assets		// 静态资源img、css、js
    |	|	├── components	// 小组件
    |	|	├── views		// 页面组件
    |	|	├── App.vue		// 根组件
    |	|	├── main.js		// 全局脚本文件(项目的入口)
    |	|	├── router
    |	|	|	└── index.js// 路由脚本文件(配置路由 url链接 与 页面组件的映射关系)
    |	|	└── store	
    |	|	|	└── index.js// 仓库脚本文件(vuex插件的配置文件,数据仓库)
    |	├── README.md
    └	└── package.json等配置文件
    

    下面我们着重介绍几个比较重要的文件

    Vue组件

    组件大多存在于components和views中,以.vue结尾,当然还有唯一根组件App.vue.

    其结构通常包括以下三项:

    # 1) template:	有且只有一个根标签
    # 2) script:	必须将组件对象导出 export default {}
    # 3) style: 	style标签明确scoped属性,代表该样式只在组件内部起作用(样式的组件化),如果不加scoped属性,该style会在整个项目中起作用
    
    <!--常见的.vue文件-->
    <template>
        <div class="test">
            <router-link to=''></router-link>	//这里的意义非常简单,其实就是a标签,用以跳转到另外一个网页,不过在Vue里面我们需要用router-link,因为这个框架他不认a标签,只认自己的
        </div>
    </template>
    
    <script>
        export default {
            name: "Test"
        }
    </script>
    
    <style scoped>
    
    </style>
    
    
    <!--App.vue文件-->
    <template>
        <div id="app">
            <!--提供一个视图组件占位符,占位符被哪个views下的视图组件替换,浏览器就显示哪个页面组件-->
            <router-view/>
        </div>
    </template>
    
    

    main.js

    main.js文件是Vue整个项目的入口文件,即项目启动时候最先执行的就是该文件,里面主要用来声明根组件和加载各种环境.

    import Vue from 'vue'			//加载vue环境
    import App from './App.vue'		//加载根组件,也是项目的唯一根组件
    import router from './router'	//加载路由环境
    import store from './store'		//加载数据仓库环境
    
    Vue.config.productionTip = false
    
    new Vue({
        router,		//路由环境
        store,		//数据库环境
        render: h => h(App)		//这里其实就是返回一个函数,箭头函数的用法在下面说明
    }).$mount('#app')			//挂载点,挂载app,等同于el:'#app'
    
    箭头函数和函数原型

    箭头函数是es6中新增的功能,其作用就是帮助我们更加简便的定义和调用一个函数,其实用法非常简单

    // 箭头函数函数体只有返回值,没有多余代码,还可以简写
    let f5 = () => 12345;
    let r5 = f5();
    console.log(r5);
    # 这里结果就是12345
    
    // 箭头函数如果有参数,() 也可以省略
    a = 10;
    let f6 = n => n * 10;
    let r6 = f6(a);
    console.log(r6);
    # 这里结果是100
    

    函数原型的概念比较类似于我们之前所了解的绑定给类的方法,其实现的语句也非常相似,最终目的还是为了实现从函数原型复用出来的函数可以有自己的值,也可以取到原型的值

    function Fn() {}
    let f1 = new Fn();
    let f2 = new Fn();
    
    Fn.prototype.num = 888;	# 我们用原函数.prototype.num来给函数原型赋值,这样从该原型函数new出阿里的对象都可以共用该原型的变量
    
    f1.num = 100;
    
    console.log(f1.num);	# 这个结果是100
    console.log(f2.num);	# 这个结果是888
    

    Vue的请求生命周期

    接下来我们就来研究一下Vue的请求的生命周期,看起来Vue项目非常的庞大,文件夹很多,莫名其妙的文件也很多,但实际上其逻辑并不麻烦,当我们的项目启动之后,浏览器过来的请求是这么走的

    1. 浏览器携带执行的url链接来访问Vue项目,先是通过main.js,知道所绑定的路由在哪
    2. 然后传给路由,也就是router组件,该组件会根据请求的路径匹配组件,用匹配到的组件来替换掉App.vue(也就是根组件)中的占位符,占位符通常为<router-view/>

    举个栗子:

    请求路径/user=>要渲染的组件 User.vue=>替换App.vue中的<router-view>
    

    两个小用法

    router和route

    //我们常用this.$router来完成路由的跳转,常用的方法包括go和push,push是指定跳到某个路由,go是相对于当前路由来说,可以前进或后退几个页面,用数字和正负号来表示,即
    this.$router.go(-1)		//代表后退一个页面
    this.$router.go(2)		//代表前进两个页面
    
    this.$router.push(`/book`)		//代表直接跳转到某个路由
    
    
    //而route相当于一个字典,用于存放路由跳转时候的各种信息,我们可以从route里面取到很多我们想要的东西,比如主键值,以此来完成路由的传参
    let pk = this.$route.params.pk
    
  • 相关阅读:
    20162324 2016-2017-2《Java程序设计》课程总结
    Java实验五网络编程与安全
    Java结对编程之挑战出题
    实验四Android开发
    Java四则运算总结
    实验三
    Java结对编程四则运算一周小结
    队列课下作业
    20162325 金立清 S2 W5 C14
    2017-2018-1 我爱学Java 第二周 作业
  • 原文地址:https://www.cnblogs.com/Xu-PR/p/11861117.html
Copyright © 2011-2022 走看看