使用 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 相关文章推荐
jQuery TextBox自动完成条
Jul 22 Javascript
select标记美化--JS式插件、后期加载
Apr 01 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
Oct 22 Javascript
JavaScript Array对象详解
Mar 01 Javascript
原生js实现autocomplete插件
Apr 14 Javascript
JS产生随机数的几个用法详解
Jun 22 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
Sep 29 Javascript
AngualrJs清除定时器遇到的坑
Oct 13 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
Aug 12 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
Nov 08 Javascript
详解一个基于套接字实现长连接的express
Mar 28 Javascript
koa2 数据api中间件设计模型的实现方法
Jul 13 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
mysql 性能的检查和优化方法
2009/06/21 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
php计算整个目录大小的方法
2015/06/19 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
详解jquery和vue对比
2019/04/16 jQuery
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
Python实现学生成绩管理系统
2020/04/05 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
Python中的引用知识点总结
2019/05/20 Python
python中下标和切片的使用方法解析
2019/08/27 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
大四学生毕业自荐信
2013/11/07 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
代办出身证明书
2014/10/21 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers