使用框架:vue
使用插件:vue-cli,vue-loader,axios ,px2rem
使用UI框架:mint-ui
第一步、先用 vue-cli 直接搭建项目
先全局安装 vue-cli
npm install --g vue-cli
然后执行创建项目语句
vue-cli 3.x则用
vue create project-name
vue-cli 2.x 用(我这用的是2.x)
vue init webpack project-name
ESlint 是统一代码风格的
下面两个是测试用的
最后是选择install 依赖包,默认npm就行了,安装慢的话可以用淘宝的镜像 cnpm。
项目搭建好在项目根目录运行
npm run dev
就可以得到这样一个页面
搭建好获得这个项目结构
第二步、引入使用的插件
(1)axios(数据请求,类似ajax,vue-resource)
npm install axios -s
安装好后,开始配置axios,和封装请求,在src下创建api文件夹用于放置请求文件
http.js ↓
创建http.js,用于放置封装文件和基本配置
import axios from 'axios'
import QS from 'qs'
//默认接口url前缀
axios.defaults.baseURL = 'http:// 你的api路径';
//超时时间,超过5秒提示请求超时
axios.defaults.timeout = 5000;
//post的默认请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
/**
* get方法,对应get请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export function get(url, params) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
}).then(res => {
resolve(res.data)
}).catch(err => {
reject(err.data)
})
})
}
/**
* post方法,对应post请求
*/
export function post(url, params,config) {
return new Promise((resolve, reject) => {
axios.post(url, QS.stringify(params),config)
.then(res => {
resolve(res.data)
}).catch(err => {
reject(err.data)
})
})
}
创建模块的请求js
login.js
import {get, post } from './http'
export const login = data => post('login_query_Personnel', data)
export const queryCode = data => get('query_Personnel_openid',data)
在组件使用
import { login } from "../api/login";
methods:{
tologin(){
login({
phone: this.phone,
password: this.password,
openid:localStorage.getItem("openid")
}).then(res => {
console.log(res);
if (res.resultCode == 0) {
Toast("登录成功");
localStorage.setItem('loginInfo',JSON.stringify(res.data))
this.$router.go(-1)
} else {
Toast(res.resultMess);
}
});
}
}
(2)引入mint-ui
npm install mint-ui -s
按需引入组件
<mt-header title="登录">
</mt-header>
import { Header, Field, Toast } from "mint-ui";
(3)引入px2rem,适配手机端
npm install postcss-px2rem -s
记得删除index.html<meta name='viewport' >标签
在.postcssrc.js中配置
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
// to edit target browsers: use "browserslist" field in package.json
"autoprefixer": {},
'postcss-px2rem-exclude':{
remUnit:75 //按照设计图
}
}
}
第三步、配置路由
设置路由路径及相对应的组件
及是否需要登陆
{ path: '/baoxiu', name: 'baoxiu', component: baoxiu, meta: { requireLogin: true } },
判断是否需要登录,在路由中设置 router.beforeEach
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requireLogin)) { //判断该路由是否需要登录权限
if (localStorage.getItem('loginInfo')) { //判断当前用户的登录信息loginInfo是否存在
next()
} else {
next({
path: '/login',
query: { Rurl: to.fullPath } //保存上一个页面
})
}
} else {
next()
}
})