使用 vue.js 构建大型单页应用


Posted in Javascript onFebruary 10, 2018

前置条件:

熟悉使用 Javascript + HTML5 + css3。
理解 ES2015 Module 模块(export、import、export-default)。
了解 nodejs 基础知识,npm 常用命令,以及 npm script 使用 (vue 项目中使用 npm 进行包管理)。
了解 webpack 打包工具 (常用配置选项以及 loader 概念)。(webpack webpack.github.io/ 是一个模块打包工具。它将一堆文件中的每个文件都作为一个模块,找出它们的依赖关系,将它们打包为可部署的静态资源。webpack 的使用也需要 npm 的安装方式)。

开始安装:

使用 vue-cli 构建大型单页应用:vue.js 的脚手架工具。

执行下述代码,即可完成项目基础构建(已配置好 webpack、依赖包的安装、基本目录的生成)。

# 全局安装 vue-cli
$ npm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack my-project
# 安装依赖,走你
$ cd my-project
$ npm install
$ npm run dev

主要目录:

├── build // webpack的基本配置、开发环境配置、生产环境配置
    ├── config // 路径、端口以及反向代理配置
    ├── dist // webpack打包后的静态资源
    ├── node_modules // npm安装的依赖包
    ├── src // 前端主文件
    │   ├── assets // 静态资源
    │   │   ├── font
    │   │   ├── img
    │   │   └── scss
    │   ├── components // 单个组件
    │   │   ├── xxx.vue // 单文件组件
    │   ├── router // 路由配置
    │   ├── store // 全局变量
    │   ├── App.vue // App组件
    │   ├── main.js 主入口文件
    ├── static // 静态文件
    ├── .babelrc  // babel的配置项
    ├── .editorconfig  // 编辑器的配置项
    ├── .gitignore  // 会忽略语法检查的目录
    ├── index.html // 入口页面
    ├── package.json // 项目的描述和依赖
package.json文件说明:项目的描述和依赖

1. scripts:编译项目的一些命令

例:执行 npm run dev ,即执行 scripts 中对应的 node build/dev-server.js。

2. dependencies:项目发布时的依赖

例:执行 npm install wx --save ,即安装依赖模块 wx。

3. devDependencies:项目开发时的依赖

例:执行 npm install sass --save-dev ,即安装依赖模块 sass。

附:npm 相关说明:

npm 为 Node.js 版本管理和依赖包管理工具,通过 node 环境来安装前端构建项目所需依赖包。

npm 安装下载速度过慢,使用淘宝镜像 cnpm install 快速安装。设置方法:

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

项目加载过程:

使用 vue.js 构建大型单页应用

1. index.html 页面

当前构建项目为 SPA (单页面应用),index.html 页面即为入口页面,进行meta 等相关页面配置。

​该页面的 <div id="app"></div> 挂载了主组件。

2. main.js:主入口文件

​注: 在 webpack.base.config 中设置 -> entry: { app: './src/main.js'}

​该文件初始化 vue 实例并引入相应模块 (引入前需确认在 package.json 中进行配置并安装),附 main.js 引入及说明:

​ import Vue from 'vue'   // 引入vue
​ 
​ import App from './App'   // 引入主组件App.vue
​ 
​ import router from './router' // 引入路由配置文件
​ 
​ import axios from 'axios' // 引入网络请求工具axios

3. App.vue:主组件

​在 index.html 入口页面中挂载了主组件,并在 main.js 主入口文件中引入了主组件。

​创建了其他组件 (例: /src/components/xxx.vue )后,通过路由配置即可渲染在当前主组件中。

4. 路由配置 vue-router

​路由配置:将组件 (components) 映射到路由 (routes),然后告诉 vue-router 在哪里渲染它们

npm install vue-router
import Vue from 'vue'

import Router from 'vue-router'

Vue.use(Router)

// 1.定义(路由)组件:import (当前应用中为单文件组件)。
import Home from '../components/Home.vue'

// 2. 定义路由并创建 router 实例,然后传 `routes` 配置
// 每个路由应该映射一个组件。
var router = {}

export default router = new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home
    }
   ]
})

// 3. 在main.js主入口文件中创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能

new Vue({
  el: '#app',
  router,
  template: '<App/>',
  components: { App }
})

// 现在,应用已经启动了!

Javascript 相关文章推荐
javascript import css实例代码
Jul 18 Javascript
xml文档转换工具,附图表例子(hta)
Nov 17 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 Javascript
HTML页面登录时的JS验证方法
May 28 Javascript
javascript实现信息增删改查的方法
Jul 25 Javascript
javascript字符串替换函数如何一次性全部替换掉
Oct 30 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
Jan 20 Javascript
vue中的scope使用详解
Oct 29 Javascript
js实现购物车功能
Jun 12 Javascript
基于vue.js实现购物车
Jan 15 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 Vue.js
javascript中的隐式调用
Feb 10 #Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
Feb 10 #Javascript
webpack之devtool详解
Feb 10 #Javascript
React组件refs的使用详解
Feb 09 #Javascript
详解vue-cli项目中的proxyTable跨域问题小结
Feb 09 #Javascript
使用express搭建一个简单的查询服务器的方法
Feb 09 #Javascript
js自定义trim函数实现删除两端空格功能
Feb 09 #Javascript
You might like
PHP中的日期处理方法集锦
2007/01/02 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
PHP aes (ecb)解密后乱码问题
2015/06/22 PHP
php中final关键字用法分析
2016/12/07 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
JavaScript中的null和undefined解析
2012/04/14 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
Python生成随机数组的方法小结
2017/04/15 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
Python数学形态学实例分析
2019/09/06 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
python——全排列数的生成方式
2020/02/26 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
初任培训自我鉴定
2013/10/07 职场文书
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
理财计划书
2014/08/14 职场文书
公司租房协议书
2014/10/14 职场文书
施工员岗位职责范本
2015/04/11 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
MySQL开启事务的方式
2021/06/26 MySQL
MySQL学习必备条件查询数据
2022/03/25 MySQL