使用 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切换光标示例代码
Oct 10 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
Aug 12 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
WEB 前端开发中防治重复提交的实现方法
Oct 26 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
js实现黑白div块画空心的图形
Dec 13 Javascript
详解vue挂载到dom上会发生什么
Jan 20 Javascript
vue实现axios图片上传功能
Aug 20 Javascript
关于layui表单中按钮自动提交的解决方法
Sep 09 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 Javascript
详细分析Node.js 模块系统
Jun 28 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 获取完整url地址
2008/12/20 PHP
纯php生成随机密码
2015/10/30 PHP
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
python getopt详解及简单实例
2016/12/30 Python
Python绘制七段数码管实例代码
2017/12/20 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
班级活动策划书
2014/02/06 职场文书
社区春季防火方案
2014/06/02 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
党课主持词大全
2015/06/30 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers