当前位置:   article > 正文

vue-cli创建uni-app项目_vuecli创建uniapp项目

vuecli创建uniapp项目

1. 创建uni-app

vue create -p dcloudio/uni-preset-vue my-project

 选择模板,建议选择默认模板

 2. 封装项目请求

        (1) 创建base文件夹-->base.js

  1. // 当前环境设置
  2. // 环境:dev(开发)、alpha(测试)、beta(预发布)、release(生产正式)
  3. var baseUrl
  4. var base = 'dev'
  5. if(base == 'dev'){
  6. // baseUrl = 'https://www.xmwarm.com:8090/' //后端域名接口地址
  7. baseUrl = 'https://appointment.cdsrmyy.com:1994/' //后端域名接口地址
  8. }
  9. export default {
  10. baseUrl,
  11. }

       (2) 创建js文件夹-->api.js文件,导出一个方法用来判断用户是否登录和存放token

  1. /*
  2. * @Author: Hu Chen
  3. * @Description: 公用api方法
  4. * @Description: 使用: this.$api.XXX 例如:this.$api.mapAddress()
  5. */
  6. import Vue from "vue";
  7. export default {
  8. /**
  9. * @description: 登录拦截 适配APP及小程序
  10. * @param {*}
  11. * @return {*}
  12. */
  13. isLogin() {
  14. return new Promise((resolve, reject) => {
  15. // 微信公众号H5登录
  16. //#ifdef H5
  17. let token = uni.getStorageSync("token");
  18. if (!token) {
  19. uni.showToast({
  20. title: "您还未登录,请先登录",
  21. duration: 1000,
  22. icon: "none",
  23. });
  24. uni.navigateTo({
  25. url: "/pagesA/user/login",
  26. });
  27. resolve(false);
  28. } else {
  29. resolve(true);
  30. }
  31. //#endif
  32. // 小程序登录
  33. //#ifdef MP-WEIXIN
  34. let token = uni.getStorageSync("token");
  35. if (!token) {
  36. uni.navigateTo({
  37. url: "/pagesA/user/authorzation",
  38. });
  39. resolve(false);
  40. } else {
  41. resolve(true);
  42. }
  43. //#endif
  44. });
  45. }
  46. };

        (3) 创建js文件夹-->request.js文件

  1. import base from "@/common/base/base";
  2. var baseUrl = base.baseUrl;
  3. // GET请求方式
  4. function GET(url, data, type = 1) {
  5. return requestObj("get", url, data, type);
  6. }
  7. // POST请求方式
  8. function POST(url, data, type = 1) {
  9. return requestObj("POST", url, data, type);
  10. }
  11. // PUT请求方式
  12. function PUT(url, data, type = 1) {
  13. return requestObj("PUT", url, data, type);
  14. }
  15. // DEL请求方式
  16. function DELETE(url, data, type = 1) {
  17. return requestObj("DELETE", url, data, type);
  18. }
  19. // 统一请求
  20. function requestObj(method, url, data, type) {
  21. // 加载Loading
  22. let contentType, timer;
  23. clearTimeout(timer);
  24. uni.hideLoading();
  25. timer = setTimeout(function() {
  26. uni.showLoading({
  27. title: "加载中...",
  28. });
  29. }, 2000);
  30. // 设置contentType
  31. if (type == 1) {
  32. contentType = "application/json";
  33. } else {
  34. contentType = "application/x-www-form-urlencoded";
  35. }
  36. let token = uni.getStorageSync("token") || "";
  37. // 请求
  38. return new Promise((resolve, reject) => {
  39. uni.request({
  40. url: baseUrl + url,
  41. data: data,
  42. method: method,
  43. header: {
  44. "Content-Type": contentType,
  45. // "X-Access-Token": token,
  46. Authorization: token,
  47. // "X-App-Code": "PSC-TB-WXMP",
  48. },
  49. success: function(res) {
  50. if (res.data.code == 200) {
  51. // 清除loading
  52. clearTimeout(timer);
  53. uni.hideLoading();
  54. resolve(res.data);
  55. } else if(res.data.code == 401) {
  56. uni.clearStorageSync()
  57. clearTimeout(timer);
  58. uni.hideLoading(timer);
  59. uni.navigateTo({
  60. url: "/pagesA/user/authorzation",
  61. });
  62. // 清除loading
  63. resolve(res.data.message);
  64. } else {
  65. // 清除loading
  66. clearTimeout(timer);
  67. uni.hideLoading();
  68. uni.showModal({
  69. showCancel: false,
  70. title: "提示",
  71. content: res.data.message,
  72. });
  73. resolve(res.data);
  74. }
  75. },
  76. fail: function(err) {
  77. reject(err);
  78. // 清除loading
  79. clearTimeout(timer);
  80. uni.hideLoading();
  81. uni.showModal({
  82. showCancel: false,
  83. title: "提示",
  84. content: "网络错误或服务器繁忙!",
  85. });
  86. },
  87. });
  88. });
  89. }
  90. export default {
  91. GET: GET,
  92. POST: POST,
  93. baseUrl: baseUrl,
  94. PUT: PUT,
  95. DELETE: DELETE,
  96. };

3. 引入UI框架--uView

如果使用HBuilder X编译器,可以在HBuilder X菜单-->工具-->插件安装中找到"scss/sass编译"插件进行安装,如果不生效,重启即可.如果使用vue-cli创建的,必须通过以下命令进行对sass(scss)安装.

npm i node-sass@4.14.1 sass-loader@7 -D

安装uView:

npm install uview-ui

配置uView:

1. 在入口文件main.js中,引入并使用uView的js库

  1. import uView from "uview-ui";
  2. Vue.use(uView);

2. 引入uView的全局scss主题文件,在根目录uni.scss文件中引入

  1. /* uni.scss */
  2. @import 'uview-ui/theme.scss';

3. 引入uView基础样式,在App.vue首行引入

注意: 一定要在style中加入 lang="scss"

  1. <style lang="scss">
  2. /* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
  3. @import "uview-ui/index.scss";
  4. </style>

4. 在pages.json中配置 easycom组件模式

  1. "easycom": {
  2. "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
  3. },

5. 如果是vue-cli模式的项目,还需要在项目根目录vue.config.js文件中进行如下配置:

  1. module.exports = {
  2. transpileDependencies: ['uview-ui']
  3. }

否则会报错,如下:

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号