使用 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的目的分析
Jan 05 Javascript
js tab 选项卡
Apr 26 Javascript
js 文本滚动效果的实例代码
Aug 17 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
XMLHttpRequest Level 2 使用指南
Aug 26 Javascript
xcode中获取js文件的路径方法(推荐)
Nov 05 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
javascript计算对象长度的方法
Oct 25 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
Sep 27 Javascript
React中使用UMEditor的方法示例
Dec 27 Javascript
vue实现简单瀑布流布局
May 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
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python中的迭代器漫谈
2015/02/03 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
使用Python的turtle模块画国旗
2019/09/24 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
python中wheel的用法整理
2020/06/15 Python
浅析Python __name__ 是什么
2020/07/07 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
社团成立邀请函
2014/01/08 职场文书
自我鉴定标准格式
2014/03/19 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
初二学习计划书范文
2014/04/27 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
镇创先争优活动总结
2014/08/28 职场文书
办护照工作证明
2014/10/01 职场文书
单位婚育证明范本
2014/11/21 职场文书
化工厂员工工作总结
2015/10/15 职场文书
小学班长竞选稿
2015/11/20 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript