关于vue-cli的一些准备工作

vue-cli

1. 新建vue-cli项目

命令 vue init webpack project-name

use ESLint to lint your code  这个是格式检测的东西,不需要选择NO

Setup unit tests  NO

setup e2e tests with NightWatch NO

2. 安装sass sass-loader

命令 npm install node-sass --save-dev

    npm install sass-loader --save-dev

vue-cli 已经帮我们配置好了webpack 直接用就好了

3. 安装rem 自适应布局 推荐使用淘宝的 flexible

(1) 安装 lib-flexible

命令 npm install lib-flexible --save

在项目入口文件 main.js 里面 引入lib-flexible

import 'lib-flexible'

(2) 添加meta 标签 (3) px 转 rem

安装 px2rem-loader

命令 npm i px2rem-loader --save-dev

配置 px2rem-loade

在 vue-cli 生成的 webpack 配置中,vue-loader 的 options 和其他样式文件 loader 最终是都是由 build/utils.js 里的一个方法生成的。

我们只需在 cssLoader 后再加上一个 px2remLoader 即可,px2rem-loader 的 remUnit 选项意思是 1rem=多少像素,结合 lib-flexible 的方案,我们将 px2remLoader 的 options.remUnit 设置成设计稿宽度的 1/10,这里我们假设设计稿宽为 750px。

var cssLoader = {

  loader: 'css-loader',

  options: {

    minimize: process.env.NODE_ENV === 'production',

    sourceMap: options.sourceMap

  }

}

var px2remLoader = {

  loader: 'px2rem-loader',

  options: {

    remUnit: 75

  }

}

并放进 loaders 数组中

function generateLoaders (loader, loaderOptions) {

const loaders = options.usePostCSS ? [cssLoader,px2remLoader,postcssLoader] : [cssLoader,px2remLoader]

if (loader) {

  loaders.push({

    loader: loader + '-loader',

    options: Object.assign({}, loaderOptions, {

      sourceMap: options.sourceMap

    })

  })

}

}

4. spa router路由配置

此前安装vue init webpack project 的时候若是选择安装了router,不用再安装了

import Vue from 'vue'

import Router from 'vue-router'

import HelloWorld from '@/components/HelloWorld'

import Demo from '@/components/Demo'

import User from '@/components/User'

import Mine from '@/components/Mine'

Vue.use(Router)

export default new Router({

  routes: [

    {

    path: '/',

    name: 'HelloWorld',

    component: HelloWorld

    },

    {

    path:'/My',

    name:'my',

    component:My,

    children:[

    {

    path:'/My/user',

    name:'User',

    component:User

    },

    {

    path:'/My/mine',

    name:'Mine',

    component:Mine

    }

    ]

    }

  ]

})

5. 项目初期对公共样式的处理 此前已经安装过node-sass sass-loader,对于公共样式的处理引入,一般都是放到main.js里面

import './common/css/reset.css' 即可

建议直接放到static静态文件里面

6. 安装 vuex

首先安装 vuex

命令:  npm install vuex -s

然后在main.js 里面引入

import Vue from 'vue'

import App from './App'

import Vuex from 'vuex'

import store from './vuex/store'

Vue.use(Vuex)

/* eslint-disable no-new */

new Vue({

  el: '#app',

  store,

  render: h => h(App)

}

第二步 构建核心的仓库 store.js

Vuex 应用的状态 state 都应当存放在 store.js 里面,Vue 组件可以从 store.js 里面获取状态,可以把 store 通俗的理解为一个全局变量的仓库。

但是和单纯的全局变量又有一些区别,主要体现在当 store 中的状态发生改变时,相应的 vue 组件也会得到高效更新。(不知道是不是可以理解为把所有的状态都放到store.js里面去处理,这样会不会状态太多?暂时还不清楚)

在 src 目录下创建一个 vuex 目录,将 store.js 放到 vuex 目录下

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({

  // 定义状态

  state: {

    author: 'suolun'

  }

})

export default store

虽然在 main.js 中已经引入了 Vue 和 Vuex,但是这里还得再引入一次

第三步:将状态映射到组件

computed: {

  author () {

    return this.$store.state.author

  }

}

主要在 computed 中,将 this.$store.state.author 的值返回给 html 中的 author

页面渲染之后就能获取到数据了

{{author}}

第四步:在组件中修改状态

这个方法还是比较简单的

methods: {

 setAuthor: function () {

   this.$store.state.author = this.inpuTxt

 }

}

一眼就能看的懂

直接赋值就好了

五:官方推荐的修改状态的方式

具体方式看链接 http://www.cnblogs.com/wisewrong/p/6344390.html

推荐官方的方式,可以让我们更好的跟踪每一个状态的变化,

7.组件

组件的运用简单分为两种,一种是全局组件,一个是内部组件,什么时候用全局还是局部的,看场景

8.关于vue-cli 解决跨域的问题

config下修改地方

dev.env.js

module.exports = merge(prodEnv, {

  NODE_ENV: '"development"',

  DEBUG_MODE:true,

  API_KEY:'"/api"'

})

prod.env.js

module.exports = {

  NODE_ENV: '"production"',

  DEBUG_MODE:false,

  API_KEY:'""'

}

index.js

env:require('./dev.env'),

// Paths

assetsSubDirectory: 'static',

assetsPublicPath: '/',

proxyTable: {

    //手动配置ajax开发环境跨域问题

    '/api/': {

        target: 'https://www.xxxx.com/',

        changeOrigin: true,

        pathRewrite: {

          '^/api': ''

        }

      }

},

在src下新建一个api.js

var root = process.env.API_KEY

export default{

  data:root

}

main.js

import Vue from 'vue'

import axios from 'axios'

import api from './api'

Vue.prototype.$http = axios;

Vue.prototype.$api = api.data

用法

this.$http({

  method:'get',

  url:this.$api+'/app/home/brand_list',

}).then(res=>{

  console.log(res)

})


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容