1、框架搭建:
初始化模版
2、manifest.json文件配置
-
配置代理
- 在需要代理的应用里配上如下代码:(target是代理的域名,pathRewrite是拦截字段)
"h5" : { "devServer" : { "port" : "8080", "disableHostCheck" : true, "proxy" : { "/api" : { "target" : "http://ip:port", "changeOrigin" : true, "ssl" : false, "pathRewrite" : { "^/api" : "" } } } } }
配置app图标:配置完成之后,打包才能看到效果
打包: appid在文件里点击获取即可,每个链接只能下载5次
3、uniapp无法使用svg图,用字体图标替换
4、集成iconfont图标库(线上)
- 问题: 复制文件unicode引入项目,图标无法加载
- 解决:在unicode前面加上http:
- 使用v-for循环添加的font无法显示
- 解决:将字体图标字符串替换:

=>\ue7aa
- 解决:将字体图标字符串替换:
5、vuex模块化和接口封装与拦截
- vuex模块化
- 场景:当页面比较复杂,分为多个模块,每个模块又需要我们对数据进行操作或者存储,这时候如果我们把所有的数据都放在store下面的index.js进行操作的话,就会显得很乱,后面不好维护。
- 使用
1、 在store文件夹下新建一个modules文件夹用来存放各个模块的js文件
-
2、在index文件里放入如下代码段,主要作用是通过正则匹配文件,当我们在页面调用vuex的同步异步方法时,通过这个文件去转发并执行。(store/index.js的代码如下)
import Vue from 'vue' import Vuex from 'vuex' import getters from './getters' import createLogger from 'vuex/dist/logger' Vue.use(Vuex) const debug = process.env.NODE_ENV !== 'production' const store = new Vuex.Store({ // strict: debug, plugins: debug ? [createLogger()] : [], getters }) const storeContext = require.context('@/store/modules', true, /\.js$/) storeContext.keys().forEach((modules) => { store.registerModule(modules.replace(/(^\.\/)|(\.js$)/g, ''), storeContext(modules).default) }) Vue.prototype.$store = store export default store
- 3、在对应的modules/user.js里写存储的数据和同步异步方法,然后export出去
- 4、页面调用数据:
computed: mapState({ hasLogin: state => state.user.hasLogin })
- 关于接口封装
- 我们使用的是插件市场:通用轻量级api接口网络请求(支持拦截器),地址:
https://ext.dcloud.net.cn/plugin?id=289
,后面根据接口的具体情况我们可以在拦截器进行相关的设置
- 我们使用的是插件市场:通用轻量级api接口网络请求(支持拦截器),地址:
6、导航栏自定义按钮设置
{
"path": "pages/user/user",
"style": {
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#0faeff",
"app-plus": {
"titleNView": {
"backgroundColor": "#0faeff",
"titleColor": "#fff",
"buttons": [ //原生标题栏按钮配置,
{
"type": "back",
"text": "返回",
"float": "left",
"fontSize": "30px",
"color": "#fff"
},
{
"type": "none",
"text": "返回",
"float": "left",
"fontSize": "14px",
"color": "#fff"
},
{
"width": "40px",
"type": "menu",
"text":"\ue679",
"float": "right",
"fontSize": "30px"
}
]
}
}
}
}