一、npm包管理工具
NPM全称Node Package Manager,是Node.js包管理工具,相当于前端的Maven 。不需要单独安装,和nodejs一起
在命令提示符输入 npm -v 可查看当前npm版本
1、项目初始化
创建npm文件夹,右键文件夹–>在终端中打开,输入npm init
按照提示输入相关信息,如果是用默认值则直接回车即可。
#name: 项目名称
#version: 项目版本号
#description: 项目描述
#keywords: {Array}关键词,便于用户搜索到我们的项目
#最后会生成package.json文件,这个是包的配置文件,相当于maven的pom.xml
#我们之后也可以根据需要进行修改。
#如果想一次性生成 package.json 文件,那么可以使用命令
npm init -y
2、修改镜像
NPM官方的管理的包都是从 http://npmjs.com下载的,但是这个网站在国内速度很慢。
这里推荐使用淘宝 NPM 镜像 http://npm.taobao.org/ ,淘宝 NPM 镜像是一个完整 npmjs.com 镜像,同步频率目前为 10分钟一次,以保证尽量与官方服务同步。
终端输入:
npm config set registry https://registry.npm.taobao.org
查看npm配置信息
npm config list
3、下载依赖npm install
3.1、默认
模块默认安装的位置:项目目录\node_modules
同时package.json 文件中,依赖包会被添加到dependencies节点下,类似maven中的
npm install jquery
会出现node_modules文件夹和package-lock.json文件
package-lock.json会锁定版本
3.2、特定
下载特定版本的依赖
npm install jquery@2.1.x
只在当前工作区使用
npm install --save-dev eslint
#或简写
npm i -D eslint
下载全局依赖
安装位置:用户目录\AppData\Roaming\npm\node_modules
npm install --global webpack
#或简写
npm install -g webpack
根据依赖下载安装包
(npm管理的项目在备份和传输的时候一般不携带node_modules文件夹,
安装会自动在项目目录下添加 package-lock.json文件,
这个文件帮助锁定安装包的版本)
npm install
3.3、其他
#更新包(更新到最新版本)
npm update 包名
#全局更新
npm update -g 包名
#卸载包
npm uninstall 包名
#全局卸载
npm uninstall -g 包名
二、模块化
1、搭建框架
新建modularization文件夹–>终端打开–>初始化
里面新建src文件夹,src下新建01.js和02.js
2、测试代码
01.js
export default{//写在default里就可以被别的调用
list(){
console.log("list...")
},
save(){
console.log("save...")
}
}
02.js
import user from './01.js'//引入 给01起名user
//调用
user.list()
user.save()
3、执行+bable转码器
注意:这时的程序无法运行的,因为ES6的模块化无法在Node.js中执行,需要用Babel编辑成ES5后再执行。
3.1、安装
在modularization重新打开终端,全局安装
npm install -g babel-cli
#查看是否安装成功
babel --version
3.2、配置.babelrc
Babel的配置文件是.babelrc,存放在项目的根目录(modularization)下,该文件用来设置转码规则和插件,presets字段设定转码规则
设置转成es2015
{
"presets": ["es2015"],
"plugins": []
}
3.3、安装转码器
在modularization目录终端中安装
npm install -D babel-preset-es2015
会生成node_modules文件夹存放es2015一些信息
3.4、转码运行
在modularization目录下新建dist文件夹,存放src中文件的转码
babel src -d dist
在dist目录下运行
node 02.js
可以运行啦
三、webpack打包
webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求。
1、全局安装
新建webpack文件夹,npm init -y初始化,安装
npm install -g webpack webpack-cli
安装后查看版本号
webpack -v
2、代码
src目录–>01.js 和 02.js 和 main.js
01.js
exports.info=function (str) {
document.write(str)//通过浏览器访问页面输入
}
02.js
exports.add=function (a, b) {
return a+b
}
main.js
const a=require('./01.js')//为了不bable直接用es6代码
const b=require('./02.js')
a.info('Hello world!'+b.add(1, 2))
3、打包
webpack目录下创建配置文件webpack.config.js
webpack目录下新建dict文件夹存放打包后文件
constpath=require("path") //Node.js内置模块
module.exports= {
entry: './src/main.js', //配置入口文件
output: {
//path: path.resolve(__dirname, './dist'),
//输出路径,__dirname:当前文件所在路径
//【不知道为什么注释掉path才能用,会自动生成在dist下】
filename: 'pack.js'//输出文件
}
}
更简便的方法:
不需要自己键dist文件夹,也不需要webpack.config.js
①在package.json中加入
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build":"webpack"
},
②把要打包的文件命名为index.js
因为package.json规定了入口时index
③webpack终端下
npm run build
会自动生成dist文件夹,里面打包好的函数命名为main.js
④扩展package.json
dev当用户使用该模式的时候,会打包出包含注释和格式等未压缩状态的代码
production当用户使用该模式的时候,会打包出最小的压缩生产环境代码
npm run dev 这个时候dist里面的文件的不是压缩过的
npm run build 这个时候dist的main.js就是压缩了的
默认production
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build":"webpack",
"dev":"webpack --mode development",
"production":"webpack --mode production"
},
4、测试
webpack目录下新建01.html
<body>
<script src="./dist/bundle.js"></script>
</body>
5、css打包
Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换。
首先我们需要安装相关Loader插件,css-loader 是将 css 装载到 javascript;style-loader 是让 javascript 认识css
npm install -D style-loader css-loader
修改webpack.config.js:
constpath=require("path") //Node.js内置模块
module.exports= {
entry: './src/index.js', //配置入口文件
output: {
//path: path.resolve(__dirname, './dist'), //输出路径,__dirname:当前文件所在路径
filename: 'bundle.js'//输出文件
},
module: {
rules: [
{
test: /\.css$/, //打包规则应用到以css结尾的文件上
use: ['style-loader', 'css-loader']
}
]
}
}
在src文件夹创建style.css
body{
background:pink;
}
修改main.js
在第一行引入style.css
require('./style.css')
运行编译命令
npm run dev
四、vue-element-admin
1、简介
vue-element-admin是基于element-ui 的一套后台管理系统集成方案。
GitHub地址:https://github.com/PanJiaChen/vue-element-admin
项目在线预览:https://panjiachen.gitee.io/vue-element-admin
精简版vue-Admin-template:https://github.com/PanJiaChen/vue-admin-template
2、安装
也可直接下载zip,将解压后的vue-admin-template-master复制到工作区中(yygh文件夹下),可以改个名vue-admin-template-test
里面也有package.json文件(npm初始化后也有),里面有很多依赖,需要根据里面的版本下载依赖
2)终端打开:npm install
,会出现node_modules文件夹
3)启动:npm run dev
,会跳转浏览器,默认9528端口
3、框架了解
3.1、package.json
运行npm run dev
后,会找到build/webpack.dev.conf.js文件
build/webpack.dev.conf.js文件中会找到build/webpack.base.conf
build/webpack.base.conf中有一个entry,规定了程序的入口是/src/main.js
3.2、config/index.js
主机名和端口号,可以改
代码自动检查插件,默认是true,需要去下载扩展,可以改成false
3.3、config/dev.env.js
定义后端接口路径,可以改成localhost:8201之类的
3.4、src
api–定义接口地址(列表、登录、注册。。。引用request模块,调用远程api)
views–视图,指用ajax调用接口
router–路由,点击不同路由显示不同内容
utils–全局工具(引入axios模块,定义全局的axios实例,并导出模块)
assets–静态资源(图片。。。)
icons–图标、js文件。。。
4、模拟登录
此时直接登录会报错
在开发者工具–network里查看
默认这个easy-mock的服务器有问题,改成本地就可以了
以后可以在config/dev.env.js中修改BASE_API:’ "http://127.0.0.1:8201 " ’
如果还没有后端接口只是想先登录,在src/store/modules/user.js中
1)找到actions里的登录login操作,将图中选中括号内全注释掉,data设置为固定值,而不需要再请求接口
const data={"token":"admin"}
setToken(data.token)
commit('SET_TOKEN', data.token)
2)其他类似
actions: {
// 登录
Login({ commit }, userInfo) {
const data={"token":"admin"}
setToken(data.token)
commit('SET_TOKEN', data.token)
// const username = userInfo.username.trim()
// return new Promise((resolve, reject) => {
// login(username, userInfo.password).then(response => {
// const data = response.data
// setToken(data.token)
// commit('SET_TOKEN', data.token)
// resolve()
// }).catch(error => {
// reject(error)
// })
// })
},
// 获取用户信息
GetInfo({ commit, state }) {
const data = {'roles':'admin',name:'admin','avatar':'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif'}
if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', data.roles)
} else {
reject('getInfo: roles must be a non-null array !')
}
commit('SET_NAME', data.name)
commit('SET_AVATAR', data.avatar)
// return new Promise((resolve, reject) => {
// getInfo(state.token).then(response => {
// const data = response.data
// if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
// commit('SET_ROLES', data.roles)
// } else {
// reject('getInfo: roles must be a non-null array !')
// }
// commit('SET_NAME', data.name)
// commit('SET_AVATAR', data.avatar)
// resolve(response)
// }).catch(error => {
// reject(error)
// })
// })
},
// 登出
LogOut({ commit, state }) {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
removeToken()
// return new Promise((resolve, reject) => {
// logout(state.token).then(() => {
// commit('SET_TOKEN', '')
// commit('SET_ROLES', [])
// removeToken()
// resolve()
// }).catch(error => {
// reject(error)
// })
// })
},
// 前端 登出
FedLogOut({ commit }) {
//return new Promise(resolve => {
commit('SET_TOKEN', '')
removeToken()
resolve()
//})
}
}
说明:token是我们手动配置的,如果过期后续自行生成,后续会有TokenHelper类生成token,在此不用关注
3)修改\src\util\request.js
config.headers[‘token’] = getToken()
5、修改路由
1)src/rooter.index.js中:
2)src/views/table/index.vue中:
3)再去src/api/table.js:
这个url默认和config/dev.env.js里的BASE_URL一起构成完整路径
4)在src/utils/request.js中引入js文件,使用axios调用接口,把接口返回数据在页面显示