vue.js(2.x)搭建web我的项目
装置开发环境
1.装置node环境
下载地址:下载地址:https://nodejs.org/en/
2.vue版本和vue.cli3.x脚手架
1.全局装置vue-cli
npm install --global @vue/cli
2.命令行cmd进入创立我的项目的目录,实现配置
vue create [我的项目名]
3.启动我的项目
cd [我的项目根目录]
npm run serve
配置我的项目路由
1.创立router路由文件
1.在src根目录创立router.js配置
import Vue from "vue";import Router from "vue-router";Vue.use(Router);const routes = [ { path: "/", redirect: "/register", },];// 加载components目录上面的路由importComponents(require.context('../components', true, /\.vue$/, 'lazy'))function importComponents(r) { r.keys().forEach(key => { routes.push({ path: key.substring(key.indexOf('/'), key.lastIndexOf('.')), component: () => r(key), meta: {requireAuth: false} }) });}const router = new Router({ routes, scrollBehavior() { return {x: 0, y: 0} //路由跳转置顶 }});// 路由拦截器router.beforeEach((to,from,next) => {next()})export default router;
2.router.js文件剖析
<font color='cornflowerblue'>1.利用node中importComponents自动化配置路由</font>
importComponents(require.context('../components', true, /\.vue$/, 'lazy'))function* importComponents(r) { console.dir(r); r.keys().forEach(key => { routes.push({ path: key.substring(key.indexOf('/'), key.lastIndexOf('.')), component: () => r(key), meta: {requireAuth: false} }) });}
<font color='cornflowerblue'>2.router.beforeEach路由拦截器</font>
//管制路由 比如说token的认证router.beforeEach((to,from,next) => {next()})
数据申请axios封装
1.装置axios依赖包
npm i axios
2.封装axios
1.src根目录创立http文件以及index.js
<font color='orange'>代码示例:</font>
* import axios from 'axios' import Store from '../vuex/index' const ConfigBaseURL = '后端api地址' //应用create办法创立axios实例 export const Service = axios.create({ timeout: 10000, // 申请超时工夫 baseURL: ConfigBaseURL, method: 'post', headers: { 'Content-Type': 'application/json;charset=utf-8', Authorization:"" }, validateStatus: function (status) { return status >= 200 && status < 300; // 默认的 }, }) /** * axios申请拦截器 */ let timerEnd,timestamp; Service.interceptors.request.use(function (config) { // 对所有POST请加密,必须是json数据提交,不反对表单 timestamp = Date.parse(new Date()); // Store.commit("showLoading"); if (config.url == "/api/User/ClientLoginAndRegist"||config.url=="/api/User/IdCardExists") { return config } if (!sessionStorage.getItem("token")){// config.data = { // ciphertext: Aes.EncryptData(config.data) // } config.headers.Authorization = "Bearer "+sessionStorage.getItem("token");
return config; } // return config //TODO:加密 if (config.method == "post" && config.headers["Content-Type"] != "multipart/form-data"&&sessionStorage.getItem("token")) { config.headers.Authorization = `Bearer ${sessionStorage.getItem("token")}`; // config.data = { // ciphertext: Aes.EncryptData(config.data) // } return config; } return config }, function (error) { // 对申请谬误做些什么 Store.commit("hideLoading"); return Promise.reject(error); }) /** * axios响应拦截器 * */ Service.interceptors.response.use(function (response) { // 后端返回字符串示意须要解密操作 //TODO 解密 // if (typeof (response.data.data) == "string") { // response.data.data = JSON.parse(Aes.DecryptData(response.data.data)); // } return response; }, function (error) { if (error&&error.response){ switch (error.response.status) { case 400: error.message="谬误申请!" break; case 401: error.message="未受权,请从新登录!" break; case 403: error.message="回绝拜访!" break; case 404: error.message="申请谬误,未找到资源!" break; case 405: error.message="申请办法未容许!" break; case 500: error.message="服务器谬误!" break; case 501: error.message="网络未实现!" break; case 502: error.message="网络谬误!" break; case 503: error.message="网络不可用!" break; case 504: error.message="网络超时!" break; case 505: error.message="http版本不反对申请!" break; } }else { error.message="网络呈现问题,请稍后再试!" } // 对响应谬误做点什么 Store.commit("hideLoading"); return Promise.reject(error); })```
挪动端适配(rem)
1.新建fontSize.js
---assets --common --js --fontSize.js
2.原理:等比缩放
代码示例:
(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; if(clientWidth>=750){ docEl.style.fontSize = '100px'; }else{ docEl.style.fontSize = 100 * (clientWidth / 750) + 'px'; } };if (!doc.addEventListener) return;win.addEventListener(resizeEvt, recalc, false);doc.addEventListener('DOMContentLoaded', recalc, false);})(document, window);
<u>获取浏览器字体默认值,设置等比比例</u>
3.加载fontSize文件
<font color='orange'>应用形式:将文件引入带main.js文件中即可</font>
UI框架引入
集体举荐应用vue开发的UI框架
1.挪动端UI框架
VantUI:目前应用过最好用的框架
vant地址:https://youzan.github.io/vant/#/zh-CN/
2.PC端框架
iViewUI:iView 是一套基于 Vue.js 的开源 UI 组件库,次要服务于 PC 界面的中后盾产品。
iView地址:https://iview.github.io/