基於vuecli3構建的一個快速開發h5 APP的模板,集成了高德地圖、mint-ui,以及antv-f2可視化框架javascript
查看vue cli版本 vue --versioncss
要求nodejs版本8.9以上html
如安裝了舊版,使用npm uninstall vue-cli -g卸載舊版本vue
安裝vue-cli3.0 npm install -g @vue/cli
java
vue create hello-world
node
選擇安裝配置選項webpack
◉ Babel ◯ TypeScript ◯ Progressive Web App (PWA) Support ❯◉ Router ◉ Vuex ◉ CSS Pre-processors ◉ Linter / Formatter ◉ Unit Testing ◯ E2E Testing ? Please pick a preset: Manually select features ? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-processors, Linter, Unit ? Use history mode for router? (Requires proper server setup for index fallback in production) Yes ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS ? Pick a linter / formatter config: Standard ? Pick additional lint features: Lint on save ? Pick a unit testing solution: Jest ? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? In dedicated config files
配置選項說明 css預編譯使用Sass/SCSS 代碼檢查使用 Standard 保存時檢查 Lint on save
單元測試工具 Jest Babel, PostCSS, ESLint配置文件單獨保存到配置文件中ios
npm run serve npm run build
在項目中添加插件使用vue add,如:vue add axios
nginx
https://cli.vuejs.org/zh/config/#%E5%85%A8%E5%B1%80-cli-%E9%85%8D%E7%BD%AEgit
3.0和2.0不一樣的是,webpack相關的配置文件都被隱藏了,若是須要配置,則經過vue.config.js來配置
根目錄下新建vue.config.js文件,進行相關配置
module.exports={ }
npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano cssnano-preset-advanced postcss-import postcss-url --S
module.exports = { plugins: { "postcss-import": {}, "postcss-url": {}, "postcss-aspect-ratio-mini": {}, "postcss-write-svg": { utf8: false }, "postcss-cssnext": {}, "postcss-px-to-viewport": { viewportWidth: 750, // (Number) The width of the viewport. viewportHeight: 1334, // (Number) The height of the viewport. unitPrecision: 3, // (Number) The decimal numbers to allow the REM units to grow to. viewportUnit: 'vw', // (String) Expected units. selectorBlackList: ['.ignore', '.hairlines'], // (Array) The selectors to ignore and leave as px. minPixelValue: 1, // (Number) Set the minimum pixel value to replace. mediaQuery: false // (Boolean) Allow px to be converted in media queries. }, "postcss-viewport-units": {}, "cssnano": { preset: "advanced", autoprefixer: false, "postcss-zindex": false }, } }
this.wxcode = this.$route.query.code;
this.$router.push({ path: '/home' })
this.$router.push({path: `/track/${this.curChildId}`})
路由設置
{ path:'/track/:cid', name: 'track', meta: { title: '歷史軌跡' }, component: () => import('@/pages/entry/track.vue') }
獲取參數
let cid = this.$route.params.cid;
一、在組件選項中定義本地的過濾器
filters: { acceptFormat: function (value) { if(value==0){ return '待受權' }else if(value==1){ return '已受權' } return '' } }
使用
<div>{{acceptStatus | acceptFormat}}</div>
二、全局定義過濾器
新建filters.js文件,添加filter過濾器
/** * 受權狀態 * @param {*} value */ export function acceptFormat(value) { if (value == 0) { return '待受權' } else if (value == 1) { return '已受權' } return '' }
在main,js文件中全局註冊定義的過濾器
// register filters Object.keys(filters).forEach(k => { console.log('k', k, filters[k]) Vue.filter(k, filters[k]) })
這樣咱們就能夠在全部組件中使用了,不用單獨在每一個組件中重複定義
<div>{{acceptStatus | acceptFormat}}</div>
const EntryIndex = () => import('@/pages/entry/Index.vue') const StatisticsIndex = () => import('@/pages/statistics/Index.vue') const MineIndex = () => import('@/pages/mine/Index.vue') const router = new Router({ mode: 'history', base: process.env.BASE_URL, routes:[ { name: 'home', path: 'home', component: EntryIndex }, { name: 'statistics', path: 'statistics', component: StatisticsIndex }, { name: 'mine', path: 'mine', component: MineIndex } ] })
在cli2.x中會有build和config兩個文件夾 ,其中config下面就是用來配置不一樣環境下的環境變量,例如開發、測試、生產環境等
但在cli3.x中發現沒有這兩個文件夾,那該如何配置環境變量 ?
查看cli3.0文檔 https://cli.vuejs.org/zh/guide/mode-and-env.html#%E6%A8%A1%E5%BC%8F
在項目根目錄下新建如下文件
.env .env.local // .local 在全部的環境中被載入,但會被 git 忽略 .env.development .env.production
而後在文件中設置 」鍵=值「 的形式
例如 VUE_APP_SECRET=secret
若是咱們在應用中使用環境變量 ,那麼在.env中必須設置以VUE_APP_開頭的健=值,不然沒法訪問到,而在webpack中能夠正常使用 process.env.VUE_APP_SECRET
vue cli通常會有三個模式 development 模式用於 vue-cli-service serve production 模式用於 vue-cli-service build 和 vue-cli-service test:e2e test 模式用於 vue-cli-service test:unit
餓了麼出品 http://mint-ui.github.io/docs/#/zh-cn2/quickstart
npm i mint-ui -S
一、所有引入
而後在main.js中引入
import MintUI from 'mint-ui' import 'mint-ui/lib/style.css' Vue.use(MintUI)
二、按需引入
按需引入須要藉助 babel-plugin-component插件,這樣能夠只引入須要的組件,以達到減少項目體積的目的
npm install babel-plugin-component -D
一、axios get請求 Vue.axios.get('/api/get', { params: { name: '', age: 45 } }).then((response) => { }).catch((error) => { });
二、axios post請求
axios.post('/user', { firstName: 'Fred', lastName: 'Flintstone' }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
三、合併請求,同時執行多個請求
axios.all([ axios.get('https://api.github.com/xxx/1'), axios.get('https://api.github.com/xxx/2') ]) .then(axios.spread(function (userResp, reposResp) { // 上面兩個請求都完成後,才執行這個回調方法 console.log('User', userResp.data); console.log('Repositories', reposResp.data); }));
// api接口 import Vue from 'vue' import axios from 'axios' import Qs from 'qs' /* eslint-disable */ let api = { // 刪除孩子信息 delChild(params) { let postData = Qs.stringify(params) return Vue.axios.post('/api/v1/children_delete', postData) }, // 獲取孩子詳情 childDetail(params) { return Vue.axios.get('/api/v1/children_detail', params) }, } export default function (Vue) { Vue.prototype.$api = api Vue.prototype.$fetch = axios }
import Api from './api' Vue.use(Api)
this.$api.sendVerifyCode({ mobile:this.phone }).then((res)=>{ })
Uncaught SyntaxError: Unexpected token <
解決: 打開vue.config文件,配置publicPath爲‘/’而不是'./'
module.exports = { // 基本路徑 publicPath: '/', }
nginx配置了代理後出現 Invalid Host header
新版的webpack-dev-server增長了安全驗證,默認檢查hostname,若是hostname不是配置內的,將中斷訪問 解決:禁用主機檢查,在根目錄下建立文件vue.config.js,而後填入以下內容
module.exports = { devServer: { disableHostCheck: true, } }
若是要對圖片的樣式進行設置能夠指定class,可是寬高必須爲100% 若是想指定圖片的寬高只能用內聯樣式
服務器配置,當匹配不到路由時,跳轉到index首頁
tomcat配置方式 http://www.javashuo.com/article/p-mptamwzo-gx.html
apache、nginx配置方式 https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90
nodejs egg服務端路由配置
router.get('*', controller.home.index);
Form Data和Request Payload
解決:轉換成Form Data的方式
import Qs from 'qs' let postData = Qs.stringify(params)
或者
let formData = new FormData() formData.append('score', score) formData.append('costtime', 0)
解決router.app.$store.state.user_info.userinfo
let userinfo = router.app.$store.state.user_info.userinfo if (userinfo.token) { next() } else { // 跳轉到登陸頁 next({ name: 'login' }) }
高德地圖 amap高德地圖vue組件 高德原生
mint-ui框架 mint-ui
vue-cli3.x文檔 vue-cli3.x
antv-f2移動端可視化ui框架 antv-f2
代碼我已經放到github上面了,歡迎你們star或者fork
github地址
https://www.jianshu.com/p/f8430536059a
https://cli.vuejs.org/zh/guide/installation.html
原文出處:https://www.cnblogs.com/fozero/p/10939290.html