利用vue-cli3快速搭建vue項(xiàng)目詳細(xì)過(guò)程

一镀层、介紹

Vue CLI 是一個(gè)基于 Vue.js 進(jìn)行快速開(kāi)發(fā)的完整系統(tǒng)丽声。有三個(gè)組件:

<u style="box-sizing: inherit;">CLI</u>@vue/cli 全局安裝的 npm 包,提供了終端里的vue命令(如:vue create 、vue serve 豆挽、vue ui 等命令)

<u style="box-sizing: inherit;">CLI 服務(wù)</u>@vue/cli-service是一個(gè)開(kāi)發(fā)環(huán)境依賴(lài)托呕。構(gòu)建于 webpackwebpack-dev-server 之上(提供 如:serve含蓉、buildinspect 命令)

<u style="box-sizing: inherit;">CLI 插件</u>:給Vue 項(xiàng)目提供可選功能的 npm 包 (如: Babel/TypeScript 轉(zhuǎn)譯、ESLint 集成项郊、unit和 e2e測(cè)試 等)

二馅扣、安裝

1、全局安裝過(guò)舊版本的 vue-cli(1.x 或 2.x)要先卸載它着降,否則跳過(guò)此步:

npm uninstall vue-cli -g //或者 yarn global remove vue-cli

操作如下:

image

可以看到我之前的版本是2.9.6差油,卸載成功后,vue命令便不存在了

ps:npm WARN警告任洞,可能是coffee-script 的某個(gè)依賴(lài)包改名了(coffee-script本身已經(jīng)淘汰了)

2蓄喇、Vue CLI 3需要 nodeJs ≥ 8.9 (官方推薦 8.11.0+,你可以使用 nvmnvm-windows在同一臺(tái)電腦中管理多個(gè) Node 版本)交掏。

(1)查看node 版本

image

(2)下載安裝nodeJs很簡(jiǎn)單(和其他系統(tǒng)軟件一樣根據(jù)需求按步驟安裝)這里不做介紹妆偏,中文官方下載地址:http://nodejs.cn/download/

3、安裝@vue/cli(Vue CLI 3的包名稱(chēng)由 vue-cli 改成了 @vue/cli

cnpm install -g @vue/cli  //yarn global add @vue/cli

操作如下圖:

image

查看版本:

vue -V //vue --version

結(jié)果如下圖:

image

三盅弛、使用

1钱骂、vue create 搭建新項(xiàng)目

(1)新建項(xiàng)目:

*官方提示:如果你在 Windows 上通過(guò) minTTY 使用 Git Bash,交互提示符并不工作挪鹏,必須通過(guò) winpty vue.cmd create hello-world 啟動(dòng)這個(gè)命令

vue create <Project Name> //文件名 不支持駝峰(含大寫(xiě)字母)

具體操作如下:

首先见秽,會(huì)提示你選擇一個(gè)preset(預(yù)設(shè)):

① 除最后兩個(gè)其他選項(xiàng)都是你此前保存的預(yù)設(shè)配置(如下圖第一個(gè)“ preset-config”是我之前保存的預(yù)設(shè)配置讨盒,如今便可以直接用了):

image

如果沒(méi)有配置保存過(guò)张吉,則只有以下兩個(gè)選項(xiàng):

② default(babel,eslint):

默認(rèn)設(shè)置(直接enter)非常適合快速創(chuàng)建一個(gè)新項(xiàng)目的原型催植,沒(méi)有帶任何輔助功能的 npm包

③ Manually select features:

手動(dòng)配置(按方向鍵 ↓)是我們所需要的面向生產(chǎn)的項(xiàng)目肮蛹,提供可選功能的 npm 包

image

手動(dòng)配置,根據(jù)你需要用方向鍵選擇(按 “空格鍵”選擇/取消選擇创南,A鍵全選/取消全選)對(duì)應(yīng)功能

image

簡(jiǎn)介:

? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>( ) Babel                           //轉(zhuǎn)碼器伦忠,可以將ES6代碼轉(zhuǎn)為ES5代碼,從而在現(xiàn)有環(huán)境執(zhí)行稿辙。                      
 ( ) TypeScript// TypeScript是一個(gè)JavaScript(后綴.js)的超集(后綴.ts)包含并擴(kuò)展了 JavaScript 的語(yǔ)法昆码,需要被編譯輸出為 JavaScript在瀏覽器運(yùn)行,目前較少人再用
 ( ) Progressive Web App (PWA) Support// 漸進(jìn)式Web應(yīng)用程序
 ( ) Router                           // vue-router(vue路由)
 ( ) Vuex                             // vuex(vue的狀態(tài)管理模式)
 ( ) CSS Pre-processors               // CSS 預(yù)處理器(如:less、sass)
 ( ) Linter / Formatter               // 代碼風(fēng)格檢查和格式化(如:ESlint)
 ( ) Unit Testing                     // 單元測(cè)試(unit tests)
 ( ) E2E Testing                      // e2e(end to end) 測(cè)試

選擇完后直接enter赋咽,然后會(huì)提示你選擇對(duì)應(yīng)功能的具體工具包旧噪,選擇自己擅長(zhǎng)或者使用廣泛的(方便遇到問(wèn)題時(shí)百度),簡(jiǎn)介如下:

①是否使用history router:

image

Vue-Router 利用了瀏覽器自身的hash 模式和 history 模式的特性來(lái)實(shí)現(xiàn)前端路由(通過(guò)調(diào)用瀏覽器提供的接口)

hash: 瀏覽器url址欄 中的 # 符號(hào)(如這個(gè) URL:http://www.abc.com/#/hello脓匿,hash 的值為“ #/hello”)淘钟,hash 不被包括在 HTTP 請(qǐng)求中(對(duì)后端完全沒(méi)有影響),因此改變 hash 不會(huì)重新加載頁(yè)面

history:利用了 HTML5 History Interface 中新增的 pushState( ) 和 replaceState( ) 方法(需要特定瀏覽器支持)陪毡。單頁(yè)客戶(hù)端應(yīng)用米母,history mode 需要后臺(tái)配置支持(詳細(xì)參見(jiàn):https://router.vuejs.org/zh/guide/essentials/history-mode.html

② css預(yù)處理器

主要為css解決瀏覽器兼容、簡(jiǎn)化CSS代碼 等問(wèn)題(*<u style="box-sizing: inherit;"> Sass誕生于2007年毡琉,最早也是最成熟的一款CSS預(yù)處理器語(yǔ)言铁瞒。</u>

? Please pick a preset: Manually select features
? Check the features needed for your project: Router, Vuex, CSS Pre-processors, Linter, Unit
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default):
> SCSS/SASS  //Sass安裝需要Ruby環(huán)境,是在服務(wù)端處理的桅滋,SCSS 是 Sass3新語(yǔ)法(完全兼容 CSS3且繼承Sass功能)
  LESS       //Less最終會(huì)通過(guò)編譯處理輸出css到瀏覽器慧耍,Less 既可以在客戶(hù)端上運(yùn)行,也可在服務(wù)端運(yùn)行 (借助 Node.js)
  Stylus     //Stylus主要用來(lái)給Node項(xiàng)目進(jìn)行CSS預(yù)處理支持丐谋,Stylus功能上更為強(qiáng)壯蜂绎,和js聯(lián)系更加緊密,可創(chuàng)建健壯的笋鄙、動(dòng)態(tài)的的CSS。

③ ESLint:

提供一個(gè)插件化的javascript代碼檢測(cè)工具

? Pick a linter / formatter config: (Use arrow keys)
> ESLint with error prevention only
  ESLint + Airbnb config
  ESLint + Standard config
  ESLint + Prettier         //使用較多

④ 何時(shí)檢測(cè):

? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>( ) Lint on save                    // 保存就檢測(cè)
 ( ) Lint and fix on commit          // fix和commit時(shí)候檢查

⑤ 單元測(cè)試 :

? Pick a unit testing solution: (Use arrow keys)
> Mocha + Chai  //mocha靈活,只提供簡(jiǎn)單的測(cè)試結(jié)構(gòu)怪瓶,如果需要其他功能需要添加其他庫(kù)/插件完成萧落。必須在全局環(huán)境中安裝
  Jest          //安裝配置簡(jiǎn)單,容易上手洗贰。內(nèi)置Istanbul找岖,可以查看到測(cè)試覆蓋率,相較于Mocha:配置簡(jiǎn)潔敛滋、測(cè)試代碼簡(jiǎn)潔许布、易于和babel集成、內(nèi)置豐富的expect

⑥ 如何存放配置 :

? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? (Use arrow keys)
> In dedicated config files // 獨(dú)立文件放置
  In package.json // 放package.json里

⑦ 是否保存本次配置(之后可以直接使用):

? Save this as a preset for future projects? (Y/n) // y:記錄本次配置绎晃,然后需要你起個(gè)名; n:不記錄本次配置

(2)搭建完成:

image

項(xiàng)目結(jié)構(gòu)如下(不同的預(yù)設(shè)包含不同的文件蜜唾,大致結(jié)構(gòu)一致):

image

對(duì)比之前的項(xiàng)目包:

image

vs
image

精簡(jiǎn)的只剩靈魂了~ ,主要的大的區(qū)別如下:

① vuex(狀態(tài)管理):

vue cli 2 中 :vuex是搭建完成后自己npm install的庶艾,并不包括在搭建過(guò)程中袁余。可以看到vue cli 2的vuex默認(rèn)文件夾(store)又包含了三個(gè)js文件:action(存放一些調(diào)用外部API接口的異步執(zhí)行的的方法咱揍,然后commit mutations改變mutations 數(shù)據(jù))颖榜、index(初始化mutations 數(shù)據(jù),是store的出口)、mutations(處理數(shù)據(jù)邏輯的同步執(zhí)行的方法的集合掩完,Vuex中store數(shù)據(jù)改變的唯一方法commit mutations)

vue cli 3 中:vuex是包含在搭建過(guò)程供選擇的預(yù)設(shè)噪漾。vue cli 3 中默認(rèn)只用一個(gè)store.js代替了原來(lái)的store文件夾中的三個(gè)js文件。action且蓬、mutations欣硼、state以及store 的 getters 的用法有很多,舉常用的例子:

eg:store.js

import Vue from 'vue';
import Vuex from 'vuex'; //引入 vuex
import store from './store' //注冊(cè)store

Vue.use(Vuex); //使用 vuex

export default new Vuex.Store({
    state: {
        // 初始化狀態(tài)
        count: 0
    },
    mutations: {
        // 處理狀態(tài)
        increment(state, payload) {
            state.count += payload.step || 1;
        }
    },
    actions: {
        // 提交改變后的狀態(tài)
        increment(context, param) {
            context.state.count += param.step;
            context.commit('increment', context.state.count)//提交改變后的state.count值
        },
        incrementStep({state, commit, rootState}) {
            if (rootState.count < 100) {
                store.dispatch('increment', {//調(diào)用increment()方法
                    step: 10
                })
            }
        }
    }
})

使用時(shí)缅疟,eg:

main.js:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store' //引入狀態(tài)管理 store

Vue.config.productionTip = false

new Vue({
  router,
  store,//注冊(cè)store(這可以把 store 的實(shí)例注入所有的子組件)
  render: h => h(App)
}).$mount('#app')

views/home.vue:

<template>
    <div class="home">
      <!--在前端HTML頁(yè)面中使用 count-->
        <HelloWorld :msg="count"/>
    </div>
</template>

<script>
    import HelloWorld from '@/components/HelloWorld.vue'
    import {mapActions, mapState} from 'vuex' //注冊(cè) action 和 state

    export default {
        name: 'home',
        computed: {
            //在這里映射 store.state.count分别,使用方法和 computed 里的其他屬性一樣
            ...mapState([
                'count' 
            ]),
        },
        created() {
            this.incrementStep();
        },
        methods: {
            //在這里引入 action 里的方法,使用方法和 methods 里的其他方法一樣
            ...mapActions([
                'incrementStep'
            ]),
        },
        components: {
            HelloWorld
        }
    }
</script>

② router (路由):

**vue cli 2 **:“ router/index.js ”

vue cli 3:“router.js”(用法和做的事都一樣)

③ 去掉 static 存淫、 新增 public 文件夾

**vue cli 2 **:static 是 webpack 默認(rèn)存放靜態(tài)資源的文件夾耘斩,打包時(shí)會(huì)直接復(fù)制一份到dist文件夾不會(huì)經(jīng)過(guò) webpack 編譯

**vue cli 3 ** :摒棄 static 新增了 public 。vue cli 3 中“靜態(tài)資源”兩種處理方式:

  • 經(jīng)webpack 處理:在 JavaScript 被導(dǎo)入或在 template/CSS 中通過(guò)“相對(duì)路徑”被引用的資源會(huì)被編譯并壓縮

  • 不經(jīng)webpack 處理:放置在 public 目錄下或通過(guò)絕對(duì)路徑被引用的資源將會(huì)“直接被拷貝”一份桅咆,不做任何編譯壓縮處理

④ index.html :

<u style="box-sizing: inherit;">vue cli 2 </u>:“index.html ”

v<u style="box-sizing: inherit;">ue cli 3 </u>:“public/index.html ”此模板會(huì)被 html-webpack-plugin 處理的

⑤ src/views:

vue cli 3 的 src文件夾 新增 views文件夾 用來(lái)存放 “頁(yè)面”括授,區(qū)分 components(組件)

⑥ 去掉 build(根據(jù)config中的配置來(lái)定義規(guī)則)、config(配置不同環(huán)境的參數(shù))文件夾 :

<u style="box-sizing: inherit;">vue cli 3 中 </u>岩饼,這些配置 你可以通過(guò) 命令行參數(shù)荚虚、或 vue.config.js (在根目錄 新建一個(gè) vue.config.js 同名文件)里的 devServer 字段配置開(kāi)發(fā)服務(wù)器

⑦ babel.config.js:

配置Babel 。Vue CLI 使用了 Babel 7 中的新配置格式 babel.config.js籍茧。和 .babelrcpackage.json 中的 babel 字段不同版述,這個(gè)配置文件不會(huì)使用基于文件位置的方案,而是會(huì)一致地運(yùn)用到項(xiàng)目根目錄以下的所有文件寞冯,包括 node_modules 內(nèi)部的依賴(lài)渴析。官方推薦在 Vue CLI 項(xiàng)目中始終使用 babel.config.js 取代其它格式。

⑧ 根目錄的一些其他文件的改變:

之前所有的配置文件都在vue create 搭建時(shí)preset預(yù)設(shè) 或者 后期可以通過(guò) 命令參數(shù) 吮龄、 vue.config.js 中配置

<u style="box-sizing: inherit;">根據(jù)需要在根目錄下新建 vue.config.js自行配置俭茧,eg:(</u>簡(jiǎn)單配置,更多配置詳情參見(jiàn)官網(wǎng):[https://cli.vuejs.org/zh/config/](https://cli.vuejs.org/zh/config/)<u style="box-sizing: inherit;"></u>

module.exports = {
    baseUrl: '/',// 部署應(yīng)用時(shí)的根路徑(默認(rèn)'/'),也可用相對(duì)路徑(存在使用限制)
    outputDir: 'dist',// 運(yùn)行時(shí)生成的生產(chǎn)環(huán)境構(gòu)建文件的目錄(默認(rèn)''dist''漓帚,構(gòu)建之前會(huì)被清除)
    assetsDir: '',//放置生成的靜態(tài)資源(s母债、css、img尝抖、fonts)的(相對(duì)于 outputDir 的)目錄(默認(rèn)'')
    indexPath: 'index.html',//指定生成的 index.html 的輸出路徑(相對(duì)于 outputDir)也可以是一個(gè)絕對(duì)路徑毡们。
    pages: {//pages 里配置的路徑和文件名在你的文檔目錄必須存在 否則啟動(dòng)服務(wù)會(huì)報(bào)錯(cuò)
        index: {//除了 entry 之外都是可選的
            entry: 'src/index/main.js',// page 的入口,每個(gè)“page”應(yīng)該有一個(gè)對(duì)應(yīng)的 JavaScript 入口文件
            template: 'public/index.html',// 模板來(lái)源
            filename: 'index.html',// 在 dist/index.html 的輸出
            title: 'Index Page',// 當(dāng)使用 title 選項(xiàng)時(shí),在 template 中使用:<title><%= htmlWebpackPlugin.options.title %></title>
            chunks: ['chunk-vendors', 'chunk-common', 'index'] // 在這個(gè)頁(yè)面中包含的塊,默認(rèn)情況下會(huì)包含,提取出來(lái)的通用 chunk 和 vendor chunk
        },
        subpage: 'src/subpage/main.js'//官方解釋?zhuān)寒?dāng)使用只有入口的字符串格式時(shí),模板會(huì)被推導(dǎo)為'public/subpage.html',若找不到就回退到'public/index.html',輸出文件名會(huì)被推導(dǎo)為'subpage.html'
    },
    lintOnSave: true,// 是否在保存的時(shí)候檢查
    productionSourceMap: true,// 生產(chǎn)環(huán)境是否生成 sourceMap 文件
    css: {
        extract: true,// 是否使用css分離插件 ExtractTextPlugin
        sourceMap: false,// 開(kāi)啟 CSS source maps
        loaderOptions: {},// css預(yù)設(shè)器配置項(xiàng)
        modules: false// 啟用 CSS modules for all css / pre-processor files.
    },
    devServer: {// 環(huán)境配置
        host: 'localhost',
        port: 8080,
        https: false,
        hotOnly: false,
        open: true, //配置自動(dòng)啟動(dòng)瀏覽器
        proxy: {// 配置多個(gè)代理(配置一個(gè) proxy: 'http://localhost:4000' )
            '/api': {
                target: '<url>',
                ws: true,
                changeOrigin: true
            },
            '/foo': {
                target: '<other_url>'
            }
        }
    },
    pluginOptions: {// 第三方插件配置
        // ...
    }
};

(3)npm run serve 跑起來(lái)~

image
image

webstorm打開(kāi)項(xiàng)目(個(gè)人習(xí)慣昧辽,你也可以搭建完直接順勢(shì)運(yùn)行)漏隐,運(yùn)行后webstorm自動(dòng)生成了個(gè).idea文件(用來(lái)存放項(xiàng)目的配置信息,如:括版本控制信息奴迅、歷史記錄等)

image

(4)查看運(yùn)行結(jié)果:

打開(kāi)瀏覽器青责,輸入運(yùn)行結(jié)果提示的地址(上上圖紅框)挺据,enter

image

(5)拉取 2.x 模板 (舊版本):

Vue CLI 3 覆蓋了舊版本的vue 命令,如果需要使用舊版本的 vue init 功能脖隶,可以全局安裝一個(gè)橋接工具:

npm install -g @vue/cli-init //`vue init` 的運(yùn)行效果將會(huì)跟 `vue-cli@2.x` 相同
vue init webpack my-project

(6)在現(xiàn)有的項(xiàng)目中安裝插件(vue add 命令)扁耐,eg:

  • 官方提示:vue add 的設(shè)計(jì)意圖是為了安裝和調(diào)用 Vue CLI 插件。這不意味著替換掉普通的 npm 包产阱。對(duì)于這些普通的 npm 包婉称,你仍然需要選用包管理器

!官方警告:我們推薦在運(yùn)行 vue add 之前將項(xiàng)目的最新?tīng)顟B(tài)提交构蹬,因?yàn)樵撁羁赡苷{(diào)用插件的文件生成器并很有可能更改你現(xiàn)有的文件王暗。

vue add @vue/eslint //如果不帶 @vue 前綴,該命令會(huì)換作解析一個(gè) unscoped 的包庄敛,你也可以基于一個(gè)指定的 scope 使用(eg:vue add @foo/bar)

2俗壹、vue ui 圖形化界面創(chuàng)建項(xiàng)目

vue ui

命令行輸入命令,操作如下:

image

然后會(huì)自動(dòng)打?yàn)g覽器頁(yè)面藻烤,選擇創(chuàng)建如下:

image
image
image

結(jié)果如下:

頁(yè)面提示正在安裝依賴(lài):

image

本地已經(jīng)有項(xiàng)目包了:

image

安裝完成:你可以在這管理(安裝绷雏、刪除)插件、運(yùn)行并分析你的項(xiàng)目文件

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怖亭,一起剝皮案震驚了整個(gè)濱河市涎显,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兴猩,老刑警劉巖期吓,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異倾芝,居然都是意外死亡讨勤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)蛀醉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人衅码,你說(shuō)我怎么就攤上這事拯刁。” “怎么了逝段?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵垛玻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我奶躯,道長(zhǎng)帚桩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任嘹黔,我火速辦了婚禮账嚎,結(jié)果婚禮上莫瞬,老公的妹妹穿的比我還像新娘。我一直安慰自己郭蕉,他們只是感情好疼邀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著召锈,像睡著了一般旁振。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涨岁,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天拐袜,我揣著相機(jī)與錄音,去河邊找鬼梢薪。 笑死蹬铺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沮尿。 我是一名探鬼主播丛塌,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼畜疾!你這毒婦竟也來(lái)了赴邻?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啡捶,失蹤者是張志新(化名)和其女友劉穎姥敛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瞎暑,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彤敛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了了赌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墨榄。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖勿她,靈堂內(nèi)的尸體忽然破棺而出袄秩,到底是詐尸還是另有隱情,我是刑警寧澤逢并,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布之剧,位于F島的核電站,受9級(jí)特大地震影響砍聊,放射性物質(zhì)發(fā)生泄漏背稼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一玻蝌、第九天 我趴在偏房一處隱蔽的房頂上張望蟹肘。 院中可真熱鬧词疼,春花似錦、人聲如沸疆前。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)竹椒。三九已至童太,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胸完,已是汗流浹背书释。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赊窥,地道東北人爆惧。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像锨能,于是被迫代替她去往敵國(guó)和親扯再。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一址遇、介紹 Vue CLI 是一個(gè)基于 Vue.js 進(jìn)行快速開(kāi)發(fā)的完整系統(tǒng)熄阻。有三個(gè)組件: CLI:@vue/cli...
    zhyzhyzz閱讀 30,721評(píng)論 1 17
  • 之前一直用的vue-cli2,vli3與cli2創(chuàng)建命令不同 一創(chuàng)建項(xiàng)目:vue create 文件名 (不支...
    劉其瑞閱讀 428評(píng)論 0 2
  • 一倔约、介紹 Vue CLI 是一個(gè)基于 Vue.js 進(jìn)行快速開(kāi)發(fā)的完整系統(tǒng)秃殉。有三個(gè)組件: CLI :@vue/c...
    yichen_china閱讀 15,344評(píng)論 2 24
  • 創(chuàng)建項(xiàng)目 vue cli是一個(gè)基于vue.js進(jìn)行快速開(kāi)發(fā)的完整系統(tǒng),通常包含三個(gè)組件浸剩,分別是: cli:@vue...
    JunChow520閱讀 2,192評(píng)論 0 0
  • 今天下午接了小張后钾军,小張問(wèn):今天晚上是不是就咱倆在家吃晚飯? 他一問(wèn)绢要,我就知道他有想法吏恭,就直接說(shuō):對(duì),你說(shuō)你想吃什...
    天邊微云閱讀 328評(píng)論 3 6