标准前端化工程 Vue-cli

知识回顾

在学习Vue-cli之前,我们已经学习了前端体系、前后端分离的演变、Vue入门、Vue的基本语法、Vue组件、Vue路由、Axios等内容。接下来我们就来学习标砖前端化工程Vue-cli。

Vue-cli

什么是Vue-cli?

Vue-cli是官方提供的一个脚手架工具,我们可以利用它快速生成前端化的工程模板,十分方便好用。
其功能主要有:

  • 统一的目录
  • 快速调试
  • 单元测试
  • 在线运行
  • ......

环境安装

使用npm进行全局安装,如果是首次安装可能速度会有点慢。

npm install vue-cli -g

检测我们安装的Vue应用。

vue list
安装和检测Vue-cli

第一个Vue-cli前端程序

1、新建文件夹vue-cli。
2、创建一个基于webpack模板的Vue应用程序。

![image-20200401201939648.png](https://upload-images.jianshu.io/upload_images/11405558-fee9ccf56645d377.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
vue init webpack myvue

建议初学前端化工程的朋友除了Project name、Project description、Author和Vue build,其他问题全部选择no!

创建基于webpack模板的前端化工程

3、安装依赖(一般下载的前端工程是没有任何依赖的),运行程序。

cd myvue #进入当前项目目录
npm install #安装所有依赖
npm run dev #启动项目

4、程序启动成功后,按住Ctrl键,鼠标单击终端中显示的http://localhost:8080,即可打开浏览器访问网页进行测试。

启动成功时终端显示内容

Vue-cli工程默认首页

如上图所示,现在我们已经创建了一个标准的前端化工程了,之后就基于这个工程进行操作了。

Vue-cli目录结构分析

Vue-cli工程的目录结构如下图所示。


Vue-cli工程的目录结构

主要目录文件的作用:

  • build和config:webpack配置文件和项目配置文件。
  • node_modules:这个目录一般在开源项目中都不存在,我们拿到项目的第一步就是安装所有依赖(npm install)。
  • src:项目的源码目录(Vue项目和js代码)。
  • static:静态资源文件。
  • .babelrc:Babel配置文件(ES6语法转换为ES5语法)。
  • .editorconfig:编辑器配置。
  • .gitignore:git文件忽略配置。
  • .postcssrc.js:CSS相关的配置文件,即导入CSS插件。
  • index.html:首页,所有的页面都是通过这里跳转的,实际开发是不使用这个文件的。
  • package.json:项目的配置文件,包括名称、版本、描述、作者、依赖、启动脚本等。

src目录

src就是我们编写前端项目的源目录,,所有代码都写在这个目录里面。


src目录结构

main.js

main.js是项目的主入口,所有的程序都是有这样一个主入口的。

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.

// es6语法,导入组件和依赖!
import Vue from 'vue'    // vue 依赖
import App from './App'  // 导入组件

Vue.config.productionTip = false  // 关闭浏览器控制台关于环境的提示!

/* eslint-disable no-new */
// vue的核心对象
new Vue({
  el: '#app',  // 节点
  components: { App },  // 组件
  template: '<App/>'  // 模板
})

App.vue

App.vue是配置路由跳转的标准的Vue模板页面。

<!-- HTML 代码模板 -->
<template>
  <div id="app">
    <!-- 配置路由跳转 -->
    <router-link to="/hello"></router-link>
    <!--显示跳转页面的内容-->
    <router-view/>
    <HelloWorld/>
  </div>
</template>

<!--JS 代码 -->
<script>
// JS 代码, 导入我们自己写的模块!
import HelloWorld from './components/HelloWorld'
// 导入对象App,在其他地方导入的话就可以直接使用了!
export default {
  name: 'App',
  components: {
    HelloWorld  // 组件!
  }
}
</script>

<!--CSS 样式: 如果没有加 scoped 就是全局生效,如果增加了就是当前页面生效!-->
<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>

标准的路由

准备工作

vue-router是Vue的官方路由,可以和Vue无缝集成。
1、在项目中安装vue-router。

npm install vue-router  --save-dev
安装vue-router

2、在模板化工程中导入和使用它。

//导入我们的路由组件
import VueRouter from 'vue-router'
//显式的调用Vue路由
Vue.use(VueRouter)

测试

1、清空项目中的多余内容。
2、在Components目录下创建和定义我们自己的组件。


定义组件
<template>
  <div>
    <h1>内容页</h1>
  </div>
</template>

<script>
export default {
  name: 'Content'
}
</script>

3、在router目录下的index.js中编写安装路由。


路由配置文件

4、编写我们自己的路由组件。

// 导入Vue
import Vue from 'vue'
// 导入我们的路由组件
import VueRouter from 'vue-router'
// 显示的调用Vue路由
Vue.use(VueRouter);

// 导入我们自己写的组件, 不需要增加 .vue 后缀!
import Content from '../components/Content'
import Main from '../components/Main'

// 配置路由
export default new VueRouter({
  // 就是我们上周讲的
  routes: [
    // 规则1 , content 内容页跳转规则!
    {
      path: '/content',
      name: 'content',
      component: Content
    },
    // 规则2
    {
      path: '/main',
      name: 'main',
      component: Main
    }
  ]
})

5、在main.js中配置路由。

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'

Vue.config.productionTip = false

// 导入我们的路由规则, 自动识别 index.js
import router from './router'

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router, // 挂载路由!这里实际上相当于router:router,参数同名可省略
  components: { App },
  template: '<App/>'
})

6、在App.vue中使用即可。

<template>
  <div id="app">
    <router-link to="/main">首页</router-link>
    <router-link to="/content">内容</router-link>
    <!-- 出口,展现路由内容的地方! -->
    <router-view></router-view>
  </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>

404配置(扩展)

1、编写404.vue组件。

<template>
  <div>
    <h1>页面不存在!404</h1>
  </div>
</template>

<script>
export default {
  name: 'NotFound'
}
</script>

2、在index.js中配置路由。

//省略export default new VueRouter({routers;[...]})
// 关于404,路由会优先匹配精准的,然后匹配通用!
{
    path: '*',//通配,但是会优先匹配NotFound组件
    component: NotFound
}

路由模式

Vue-cli工程有两种路由模式:

export default new VueRouter({
  mode: 'history', // 配置路由模式!
  routes: []
}

配置完成后访问网页路径中就不会有#了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容