【vue】vue組件化開發(fā)初體驗(yàn)-示例vue-loader-example學(xué)習(xí)記錄

目錄結(jié)構(gòu)

- demo/ 
    + package.json //npm配置文件 
    + webpack.config.js //webpack配置 
    + index.html //頁面 
    - node_modules //npm加載的模塊 
    - src //開發(fā)資源目錄 
        - assets //一些資源 
            + logo.png //圖片資源 
        - components //vue組件 
            + a.vue  
            + b.vue 
            + counter.vue 
        + app.vue //布局文件  
        + main.js //入口文件

初始化npm

  1. 生成npm配置文件 package.json
npm init
  1. 可以粘貼如下配置內(nèi)容替換到package.json中钳垮,或者根據(jù)變動(dòng)進(jìn)行修
{
  "name": "demo_vue-loader-example",
  "version": "0.0.1",
  "description": "demo",
  "main": "index.js",
  "scripts": {
    "dev": "webpack-dev-server --inline --hot --quiet", 
    "build": "export NODE_ENV=production && webpack --progress --hide-modules"
  },
  "author": "dingyiming",
  "license": "MIT",
  "devDependencies": {
    "babel-core": "^6.2.1",
    "babel-loader": "^6.2.0",
    "babel-plugin-transform-runtime": "^6.1.18",
    "babel-preset-es2015": "^6.1.18",
    "babel-preset-stage-0": "^6.1.18",
    "babel-runtime": "^6.2.0",
    
    "css-loader": "^0.23.0",
    "node-sass": "^3.4.2",
    "sass-loader": "^3.1.2",
    "style-loader": "^0.13.0",
    "stylus-loader": "^1.4.2",
    
    "file-loader": "^0.8.5",
    "jade": "^1.11.0",
    "template-html-loader": "0.0.3",
    
    "vue-hot-reload-api": "^1.2.1",
    "vue-html-loader": "^1.0.0",
    "vue-loader": "^7.1.4",
    
    "webpack": "^1.12.9",
    "webpack-dev-server": "^1.14.0"
  },
  "dependencies": {
    "vue": "^1.0.10"
  }
}
  1. 下載node模塊
npm install
  • 其實(shí)我是一條條用npm i xxx --save-dev 敲的惑淳,沒有在package.json里面的 "devDependencies":{}手動(dòng)添加內(nèi)容,可以一個(gè)個(gè)裝(也可以一起敲)如 npm i webpack --save-dev,npm i vue --save
  • --save-dev 把依賴名和版本要求放在了 "devDependencies":{}饺窿,
  • --save 放在了 "dependencies":{}
  • 每敲一個(gè)下載完后可以看到 "devDependencies":{}依賴內(nèi)容的添加

新建index.html用于展示最終頁面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Vue Webpack Example</title>
</head>
<body>
<app></app>
<script src="dist/build.js"></script>
</body>
</html>

新建webpack.config.js用于配置webpack

var webpack = require('webpack')

module.exports = {
  entry: './src/main.js',
  output: {
    path: './dist',
    publicPath: 'dist/',
    filename: 'build.js'
  },
  module: {
    loaders: [
      {
        test: /\.vue$/,
        loader: 'vue'
      },
      {
        // edit this for additional asset file types
        test: /\.(png|jpg|gif)$/,
        loader: 'file?name=[name].[ext]?[hash]'
      }
    ]
  },
  // example: if you wish to apply custom babel options
  // instead of using vue-loader's default:
  babel: {
    presets: ['es2015', 'stage-0'],
    plugins: ['transform-runtime']
  }
}

if (process.env.NODE_ENV === 'production') {
  module.exports.plugins = [
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"production"'
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      }
    }),
    new webpack.optimize.OccurenceOrderPlugin()
  ]
} else {
  module.exports.devtool = '#source-map'
}

新建src目錄用于存放開發(fā)文件

新建入口文件main.js

var Vue = require('vue')
var App = require('./app.vue')

new Vue({
  el: 'body',
  components: {
    app: App
  }
})

新建組件布局文件app.vue

組件布局將在這里設(shè)置歧焦,.vue文件將由vue-loader進(jìn)行加載,.vue內(nèi)同時(shí)包含html肚医、css绢馍、js源碼,使組件的獨(dú)立肠套,組件之間可以盡可能地解耦舰涌,便于開發(fā)維護(hù)

<template lang="jade">
div
  img(class="logo", src="./assets/logo.png")
  h1 {{msg}}
  comp-a
  comp-b
  counter
</template>

<script>
import CompA from './components/a.vue'
import CompB from './components/b.vue'
import Counter from './components/counter.vue'
export default {
  data () {
    return {
      msg: 'Hello from vue-loader!'
    }
  },
  components: {
    CompA,
    CompB,
    Counter
  }
}
</script>

<style lang="stylus">
font-stack = Helvetica, sans-serif
primary-color = #999
body
  font 100% font-stack
  color primary-color
.logo
  width 40px
  height 40px
</style>

新建components文件夾

用于開發(fā)具體的子組件,均以.vue的后綴呈現(xiàn)

  • a.vue
<style scoped>
.container {
  border: 1px solid #00f;
}
.red {
  color: #f00;
}
</style>

<template>
  <div class="container">
    <h2 class="red">{{msg}}</h2>
  </div>
</template>

<script>
export default {
  data () {
    return {
      msg: 'Hello from Component A!'
    }
  }
}
</script>
  • b.vue
<style scoped>
.container {
  border: 1px solid #f00;
}
h2 {
  color: #393;
}
</style>

<template>
  <div class="container">
    <h2>Hello from Component B!</h2>
  </div>
</template>
  • counter.vue
<template>
  <div>
    <h1>I am a Counter Component. Edit me in dev mode.</h1>
    <p>Current count: {{count}}</p>
  </div>
</template>

<script>
export default {
  data () {
    return { count: 0 }
  },
  ready () {
    this.handle = setInterval(() => {
      this.count++
    }, 1000)
  },
  destroyed () {
    clearInterval(this.handle)
  }
}
</script>

新建assets文件夾用于放一些資源

  • 此項(xiàng)目下有一張圖

打包運(yùn)行查看

  • 打包:
npm run build
  • 運(yùn)行
npm run dev
  • 查看
瀏覽器中訪問 localhost:8080

原文: https://segmentfault.com/a/1190000004060034 丁一鳴

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末你稚,一起剝皮案震驚了整個(gè)濱河市瓷耙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刁赖,老刑警劉巖搁痛,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宇弛,居然都是意外死亡鸡典,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門涯肩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轿钠,“玉大人巢钓,你說我怎么就攤上這事×贫猓” “怎么了症汹?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贷腕。 經(jīng)常有香客問我背镇,道長,這世上最難降的妖魔是什么泽裳? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任瞒斩,我火速辦了婚禮,結(jié)果婚禮上涮总,老公的妹妹穿的比我還像新娘胸囱。我一直安慰自己,他們只是感情好瀑梗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布烹笔。 她就那樣靜靜地躺著,像睡著了一般抛丽。 火紅的嫁衣襯著肌膚如雪谤职。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天亿鲜,我揣著相機(jī)與錄音允蜈,去河邊找鬼。 笑死蒿柳,一個(gè)胖子當(dāng)著我的面吹牛饶套,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播其馏,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼凤跑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了叛复?” 一聲冷哼從身側(cè)響起仔引,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎褐奥,沒想到半個(gè)月后咖耘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撬码,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年儿倒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夫否,死狀恐怖彻犁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凰慈,我是刑警寧澤汞幢,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站微谓,受9級(jí)特大地震影響森篷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜豺型,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一仲智、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姻氨,春花似錦钓辆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碉咆。三九已至抖韩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疫铜,已是汗流浹背茂浮。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壳咕,地道東北人席揽。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像谓厘,于是被迫代替她去往敵國和親幌羞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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

  • 來自vue官方示例:https://github.com/vuejs/vue-loader-example使用了v...
    dingyiming閱讀 2,156評(píng)論 2 24
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺竟稳,特此分享以備自己日后查看属桦,也希望更多的人看到...
    小小字符閱讀 8,140評(píng)論 7 35
  • 【0724今日話題】除了本職工作以外,你還通過哪些渠道賺過錢他爸?(話題來自貓友付華) ————————— 上班之后聂宾,...
    朱朱的餐具閱讀 212評(píng)論 5 4
  • 走進(jìn)村子里 雞鳴狗吠的聲音 成為黎明時(shí) 村里最美的晨曲 凹凸的路面 如先輩一臉的滄桑 被歲月消磨的 不是泥巴 而是...
    鄉(xiāng)野閑翁閱讀 184評(píng)論 0 2
  • 最初的版本是“云移風(fēng)動(dòng)月露頭,驚艷天穹萬千眸诊笤。九州對(duì)月吃一口系谐,天下東西是一家√指”但后兩句不押韻纪他,后來修改如下鄙煤。起初...
    伯也執(zhí)殳閱讀 325評(píng)論 0 0