前端入门(二)npm包管理+模块化+bable转码器+webpack打包+vue-element-admin

一、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、安装

1)使用git克隆安装步骤

也可直接下载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调用接口,把接口返回数据在页面显示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值