一、初始化项目

1.1、新建 package.json

npm init

1.2、安装依赖

npm 安装 vue、vue-router、vue-loader、webpack、webpack-cli,这些只是开发环境所需要的依赖,使用 --save-dev 安装到开发环境(见 package.json devDependencies)下:

npm install vue vue-router vue-loader webpack webpack-cli --save-dev

webpack 4.x 已经把 cli 单独拎出来了,所以还要安装 webpack-cli。webpack 本身其实直接能处理的只有 js 资源,是通过各种 loader 让其他资源可以被 webpack 打包处理。

用 vue 写单文件组件(.vue 文件),安装 vue-loader。

1.3、创建项目目录、文件

│  index.html
│  package.json
│  README.md
│
└─src│  App.vue│  main.js│  ├─assets│  └─images│          pic.png│          ├─components├─router│      index.js│      ├─utils└─viewsAbout.vueHome.vue

src/App.vue

<template><div id="app">{{message}}</div>
</template><script>
export default {name: "App",data() {return {message: "Hello!"}}
}
</script>

src/main.js

import Vue from 'vue'
import App from "./App.vue"// 创建 Vue 实例
new Vue({router,render: h => h(App)
}).$mount("#app")

index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>custom-project-vue</title>
</head><body><div id="app"></div>
</body></html>

二、webpack 基本配置

2.1、添加配置文件

根目录下新建 webpack.config.js,配置 webpack:

const path = require('path') // 系统路径模块
const htmlWebpackPlugin = require('html-webpack-plugin') // 引入模板渲染插件
const VueLoaderPlugin = require('vue-loader/lib/plugin') // 将你定义过的其它规则复制并应用到 .vue 文件里相应语言的块module.exports = {entry: path.join(__dirname, './src/main.js'), // 项目总入口 js 文件// 输出文件output: {path: path.join(__dirname, 'dist'), // 所有的文件都输出到 dist 目录下filename: 'bundle-[hash].js' // 输出文件的名称加上 hash 值},module: {rules: [{// 使用 vue-loader 解析 .vue 文件test: /\.vue$/,loader: 'vue-loader'},{test: /\.css$/,// 要加上 style-loader 才能正确解析 .vue 文件里的 <style> 标签内容use: ['style-loader', 'css-loader']}]},plugins: [new htmlWebpackPlugin({filename: 'index.html', // 生成的文件名称template: 'index.html', // 指定用 index.html 做模版inject: 'body' // 指定插入的 <script> 标签在 body 底部}),new VueLoaderPlugin()]
}

添加了一些引用 style-loader、css-loader,需要安装:

npm install html-webpack-plugin style-loader css-loader vue-template-compiler --save-dev

安装并引入 html-webpack-plugin 的目的是在打包项目的时候,在 dist 文件夹下也会生成 index.html 文件,也会添加上对出口文件的引用。

2.2、开启本地服务

webpack-dev-server 可以在本地启动一个服务器,而且当有任何文件修改的时候会自动重新打包,并且刷新浏览器页面。

安装 webpack-dev-server,配置本地开发环境:

npm install webpack-dev-server cross-env --save-dev

用上 cross-env 是因为要修改 package.json 里的 scripts,而不同的平台写 scripts 的方式不一样。

修改 package.json 里的 scripts:

  "scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev": "cross-env NODE_ENV=development webpack-dev-server --inline --hot --open --config webpack.config.js"},

执行 npm run dev,项目成功启动后会自动打开浏览器。

2.3、添加构建脚本

在 package.json 文件的 scripts 属性里添加 build 脚本:

  "scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev": "cross-env NODE_ENV=development webpack-dev-server --inline --hot --open --config webpack.config.js","build": "webpack --config webpack.config.js"},

2.4、打包项目测试

完成以上配置后运行 npm run build 来构建项目,可以看到在当前目录下生成了一个 dist 目录,目录下有一个 bundle.js 和 index.html 文件,这就是打包好的项目。

2.5、添加图片、CSS 预处理器等 loader

图片 loader 用的是 url-loader,它依赖于 file-loader,比 file-loader 多了一个可以把小于一定大小的图片直接转化成 base64 的形式插入到 html 页面,可以减少网络请求。

安装依赖:

npm install file-loader url-loader node-sass sass-loader --save-dev

修改 webpack.config.js,在 module rules 下添加:

// ...
{test: /\.scss$/,use: [// 处理顺序是从 sass-loader 到 style-loader'style-loader','css-loader','sass-loader']
}, {test: /\.(gif|jpg|jpeg|png|svg)$/i,use: [{loader: 'url-loader',options: {// 当文件大小小于 limit byte 时会把图片转换为 base64 编码的 dataurl,否则返回普通的图片limit: 5120000, // 500k 以下转为 base64name: 'dist/assest/images/[name]-[hash:5].[ext]' // 图片文件名称加上内容哈希}}]
}
// ...

2.6、添加 postcss-loader + autoprefixer,自动添加 css 浏览器前缀

npm install postcss-loader autoprefixer --save-dev

新增 postcss 配置文件 postcss.config.js:

const autoprefixer = require('autoprefixer')module.exports = {plugins: [autoprefixer({browsers: ['last 5 versions']})]
}

webpack.config.js:

      {test: /\.css$/,// 要加上 style-loader 才能正确解析 .vue 文件里的 <style> 标签内容use: ['style-loader', {loader: 'css-loader',options: {importLoaders: 1}},'postcss-loader']},{test: /\.scss$/,use: [// 处理顺序是从 sass-loader 到 style-loader'style-loader','css-loader',{loader: 'postcss-loader',options: {sourceMap: true}},'sass-loader']},

2.7、添加 babel-loader,转译 es6 代码为 es5 代码

项目根目录创建 .babelrc 文件:

{"presets": ["env"]
}

安装依赖:

npm install babel-loader@7 babel-core babel-preset-env --save-dev

修改 webpack.config.js,module.rules 再加一条:

      {// 转译 es6 代码为 es5 代码test: /\.js$/,exclude: /(node_modules|bower_components)/, // 不处理这两个文件夹里的内容loader: 'babel-loader'}

2.8、清除旧的 bundle.js

每次修改文件,npm run build 之后,都会生成一个新的 bundle-[hash].js 文件,添加 clean-webpack-plugin,每次 build 之前可以自动先清除输出文件夹。

安装 clean-webpack-plugin:

npm install clean-webpack-plugin --save-d

修改 webpack.config.js,引入 clean-webpack-plugin 并在 plugins 数组添加一项:

const {CleanWebpackPlugin
} = require("clean-webpack-plugin") // 清除输出文件夹plugins: [new CleanWebpackPlugin()]

2.9、添加可以自动解析的扩展

import 的时候可以不用写后缀也能正确引用文件,例如:

import App from './App'

打开 webpack.config.js,添加 resolve:

  resolve: {extensions: ['.js', '.json', '.vue']},

三、路由配置

src/router/index.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'Vue.use(VueRouter)const routes = [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}
]const router = new VueRouter({routes
})export default router

在 main.js 中引入路由配置文件:

import router from './router'

在 App.vue 中添加 router-link:

<template><div id="app"><router-view></router-view><router-link to="/">首页</router-link><router-link to="/about">关于</router-link></div>
</template>

项目结构:

│  .babelrc
│  .gitignore
│  index.html
│  LICENSE
│  package-lock.json
│  package.json
│  postcss.config.js
│  README.md
│  webpack.config.js
│
├─dist
│      bundle-40277308b55fa87c0dd3.js
│      index.html
│
└─src│  App.vue│  main.js│  ├─assets│  └─images│          pic.png│          ├─components├─router│      index.js│      ├─utils└─viewsAbout.vueHome.vue

GitHub

不借助 vue-cli 工具自行搭建 vue 项目相关推荐

  1. Vue CLI 3 多页应用项目的搭建

    在项目初期时,从零开始搭建和配置本地前端开发环境是一项很繁琐的工作,需要考虑到项目目录结构.项目基本配置.Webpack 配置等等.通过 Vue CLI 3 可以快速的生成一个项目,这样我们就可以专注 ...

  2. Vue CLI 3 脚手架搭建

    @[TOC](Vue CLI 3 脚手架搭建) 注意 see -> cli.vuejs.org/zh/guide/ Vue CLI 的包名称由 vue-cli 改成了 @vue/cli Vue ...

  3. vue ui工具来创建vue项目(IDEA)

    使用vue ui工具来创建vue项目(IDEA) 1.下载node.js 首先我们上node.js官网, 下载最新的长期版本,直接运行安装完成之后,我们就已经具备了node和npm的环境 2.检查是否 ...

  4. vue cli 3 升级到 vue cli 4 方法步骤及升级点总结

    vue cli 3 升级到 vue cli 4 方法步骤及升级点总结 官方升级英文文档,中文文档相对滞后. 简介:vue cli 4 官方已经更新有一段时间了,现在是4.0.5 版本,看了官方文档大概 ...

  5. 使用Yarn全局安装@vue/cli,无法执行vue命令的解决方案

    使用Yarn全局安装@vue/cli,无法执行vue命令的解决方案 使用Yarn全局安装@vue/cli,无法执行vue命令的解决方案 使用Yarn全局安装@vue/cli,无法执行vue命令的解决方 ...

  6. 不借助idea开发工具构建一个Javaweb项目

    不借助idea开发工具构建一个Javaweb项目 目录结构 webappsroot|----------WEB-INF|----------classes(存放字节码)|----------lib(存 ...

  7. 通过CLI工具构建一个Vue.js程序

    使用CLI工具之前需要用户对Node.js和相关构建工具有一定程序的了解. CLI是构建一个快速而规范的Vue.js项目的重要工具.为了让读者能够快速地学会使用CLI工具,下面直接使用CLI进行项目的 ...

  8. vue Cli 脚手架的搭建

    1.安装 node.js  应用 安装完之后测试是否安装成功,如图: 2.全局安装 vue - cli 输入命令符: npm install --global vue-cli 测试是否安装成功,成功如 ...

  9. vue之使用vue-cli搭建SPA项目

    目标 1.如何使用vue-cli搭建SPA项目 步骤一:使用脚手架创建项目骨架 步骤二:运行完上面的命令后,我们需要将当前路径改变到SPA这个文件夹内,然后安装需要的模块 步骤三:启动并访问项目 步骤 ...

  10. 基于vue cli 3.0创建前端项目并安装cube-ui

    前提条件: 安装node.js. 国内的开发者最好先配置淘宝镜像. 之后用cnpm来代替npm命令. 项目创建过程: 打开cmd,输入命令进入目标工作空间,以本机项目为例: cd /d d: cd D ...

最新文章

  1. 基于Hadoop的MapReduce框架研究报告
  2. 递归函数练习——累乘
  3. 微众WeCross 跨链平台(12)合约总结
  4. android MotionEvent中getX()和getRawX()的区别
  5. ie8 object param没有效果_如何用php实现分页效果
  6. 【网络基础】 PAUSE帧总结
  7. android 函数式编程_Android开发人员的函数式编程-第1部分
  8. java 漏洞挖掘_Java反序列化漏洞的挖掘、攻击与防御
  9. python网络爬虫 抓取金融分析师名单
  10. Nginx部署静态页面及引用图片有效访问的两种方式
  11. 洛谷—— P1847 轰炸II
  12. 图像处理与计算机视觉经典文章
  13. matlab里function函数的用法,function函数 function函数的具体用法
  14. mysql 题库_题库Mysql表设计案例
  15. Nginx配置使用upstream负载均衡和proxy_cache缓存
  16. [保姆级教程] 从原理到应用,超级详细的MPU6050传感器整理,看完这一篇就够了
  17. C#创建临时文件夹方法
  18. 当析构函数遇到多线程 ── C++ 中线程安全的对象回调
  19. 我打算去广东第一“鬼城”,买房安家
  20. pandas dataframe获取列名、添加列名、列索引

热门文章

  1. wxpython 教程 pdf_活学活用wxPython 完整版PDF
  2. air724UG + Luat玩转物联网(一) 环境搭建及固件烧录
  3. 抖音上热门规则 视频md5码查看器
  4. Linux 普通用户su root 权限的开启和禁止
  5. iOS GPS定位减小精度误差的几种处理方法
  6. windows清理C盘
  7. delphi自带控件操作excel
  8. 75道面试逻辑智力测试题内附详细答案
  9. 驱动开发:BSOD 0x93蓝屏 无效句柄
  10. 数字类型转换以及函数全介绍