使用 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 相关文章推荐
原生js编写设为首页兼容ie、火狐和谷歌
Jun 05 Javascript
jQuery事件绑定和委托实例
Nov 25 Javascript
JavaScript三元运算符的多种使用技巧
Apr 16 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
jquery解析XML及获取XML节点名称的实现代码
May 18 Javascript
jquery把int类型转换成字符串类型的方法
Oct 07 Javascript
AngularJS路由实现页面跳转实例
Mar 03 Javascript
微信小程序中hidden不生效原因的解决办法
Apr 26 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
Jul 29 Javascript
在layui tab控件中载入外部html页面的方法
Sep 04 Javascript
关于layui表单中按钮自动提交的解决方法
Sep 09 Javascript
layui框架与SSM前后台交互的方法
Sep 12 Javascript
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简单实现发送带附件的邮件
2015/06/10 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
php通过各种函数判断0和空
2020/07/04 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
pandas分区间,算频率的实例
2019/07/04 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
医药营销专业个人自荐信
2013/09/29 职场文书
仓库组长岗位职责
2014/01/29 职场文书
《童趣》教学反思
2014/02/19 职场文书
职工代表大会主持词
2014/04/01 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
热情服务标语
2014/10/07 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android