欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解如何使用webpack在vue項(xiàng)目中寫jsx語法

 更新時(shí)間:2017年11月08日 09:49:40   作者:itKingOne  
本篇文章主要介紹了詳解如何使用webpack在vue項(xiàng)目中寫jsx語法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

本文介紹了如何使用webpack在vue項(xiàng)目中寫jsx語法,分享給大家,具體如下:

我們知道Vue 2.0中對虛擬DOM的支持。我們可以通過JavaScript動態(tài)的創(chuàng)建元素,而不用在template中寫HTML代碼。虛擬DOM最終將被渲染為真正的DOM。

data: {
 msg: 'Hello world'
},
render (h) {
 return h(
 'div',
 { attrs: { id: 'my-id' },
 [ this.msg ]
 );
}

渲染后的內(nèi)容為:

<div id='my-id'>Hello world</div>

Vue 2.0中的render為我們開啟了一片新的天地,賦予了我們無限的想象力。比如,我們可以把React中用到的JSX語法應(yīng)用到Vue中來。接下來,我們就聊聊怎么在Vue項(xiàng)目中使用JSX.

JSX簡介

JSX是基于Javascript的語言擴(kuò)展, 它允許在Javascript代碼中插入XML語法風(fēng)格的代碼。如下所示:

data: {
 msg: 'Hello world'
},
render (h) {
 return (
 <div id='my-id'>,
  { this.msg } 
 </div>
 );
}

但值得注意的是,瀏覽器默認(rèn)是解析不了JSX的,它必須要先編譯成標(biāo)準(zhǔn)的JavaScript代碼才可以運(yùn)行。就像我們需要將sass或者less編譯為CSS代碼之后才能運(yùn)行一樣。

在Vue中使用JSX

Vue框架并沒有特意地去支持JSX,其實(shí)它也沒必要去支持,因?yàn)镴SX最后都會編譯為標(biāo)準(zhǔn)的JavaScript代碼。既然這樣, 那Vue和JSX為什么能配合在一起使用呢? 很簡單, 因?yàn)閂ue支持虛擬DOM, 你可以用JSX或者其他預(yù)處理語言,只要能保證render方法正常工作即可。

Vue官方提供了一個(gè)叫做babel-plugin-transform-vue-jsx的插件來編譯JSX, 我們稍后介紹如何使用它。

為什么要在Vue中使用JSX

為什么要再Vue中使用JSX ? 其實(shí)Vue并沒有強(qiáng)迫你去使用JSX, 它只是提供了一種新的方式而已。正所謂蘿卜青菜,各有所愛。有的人覺得在render方法中使用JSX更簡潔,有的人卻覺得在JavaScript代碼中混入HTML代碼很惡心。反正你喜歡就用,不喜歡就不用唄。廢話少說,我們先看一個(gè)簡單的應(yīng)用:
script.js

new Vue({
 el: '#app',
 data: {
 msg: 'Click to see the message'
 },
 methods: {
 hello () {
  alert('This is the message')
 }
 }
});

index.html

<div id="app">
 <span 
  class="my-class" 
  style="cursor: pointer" 
  v-on:click="hello"
 >
  {{ msg }}
 </span>
</div>

代碼很簡單,就是在頁面上顯示一個(gè)span, 里面的內(nèi)容為"Click to see the message"。當(dāng)點(diǎn)擊內(nèi)容時(shí),彈出一個(gè)alert。我們看看用render怎么實(shí)現(xiàn)。

用Vue 2.0中的render函數(shù)實(shí)現(xiàn)

script.js

new Vue({
 el: '#app',
 data: {
 msg: 'Click to see the message'
 },
 methods: {
 hello () {
  alert('This is the message')
 }
 },
 render (createElement) {
 return createElement(
  'span',
  {
  class: { 'my-class': true },
  style: { cursor: 'pointer' },
  on: {
   click: this.hello
  }
  },
  [ this.msg ]
 );
 },
});

index.html

<div id="app"><!--span will render here--></div>

使用JSX來實(shí)現(xiàn)

script.js

new Vue({
 el: '#app',
 data: {
 msg: 'Click to see the message.'
 },
 methods: {
 hello () {
  alert('This is the message.')
 }
 },
 render: function render(h) {
 return (
  <span
  class={{ 'my-class': true }}
  style={{ cursor: 'pointer' }}
  on-click={ this.hello }
  >
  { this.msg }
  </span>
 )
 }
});

index.html和上文一樣。

babel-plugin-transform-vue-jsx

正如前文所說, JSX是需要編譯為JavaScript才可以運(yùn)行的, 所以第三個(gè)樣例需要有額外的編譯步驟。這里我們用Babel和Webpack來進(jìn)行編譯。

打開你的webpack.config.js文件, 加入babel loader:

loaders: [
 { test: /\.js$/, loader: 'babel', exclude: /node_modules/ }
]

新建或者修改你的.babelrc文件,加入 babel-plugin-transform-vue-jsx 這個(gè)插件

{
 "presets": ["es2015"],
 "plugins": ["transform-vue-jsx"]
}

現(xiàn)在運(yùn)行webpack, 代碼里面的JSX就會被正確的編譯為標(biāo)準(zhǔn)的JavaScript代碼。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3.0實(shí)踐之寫tsx語法實(shí)例

    vue3.0實(shí)踐之寫tsx語法實(shí)例

    很久不寫博客了,最近在使用ts和tsx開發(fā)vue類項(xiàng)目,網(wǎng)上資料比較少,順便記錄一下方便同樣開發(fā)的人互相學(xué)習(xí)共同進(jìn)步,下面這篇文章主要給大家介紹了關(guān)于vue3.0實(shí)踐之寫tsx語法的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Vue項(xiàng)目配置在局域網(wǎng)下訪問方式

    Vue項(xiàng)目配置在局域網(wǎng)下訪問方式

    這篇文章主要介紹了Vue項(xiàng)目配置在局域網(wǎng)下訪問方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue自定義Hook實(shí)現(xiàn)簡化本地存儲

    Vue自定義Hook實(shí)現(xiàn)簡化本地存儲

    這篇文章主要為大家詳細(xì)介紹了如何通過使用 Vue 3 的 Composition API 創(chuàng)建一個(gè)強(qiáng)大而靈活的自定義 Hook,簡化了在 localStorage 或 sessionStorage 中管理數(shù)據(jù)的流程,需要的可以參考下
    2023-12-12
  • Vue3使用transition實(shí)現(xiàn)組件切換的過渡效果

    Vue3使用transition實(shí)現(xiàn)組件切換的過渡效果

    <Transition> 是一個(gè)內(nèi)置組件,這意味著它在任意別的組件中都可以被使用,無需注冊,它可以將進(jìn)入和離開動畫應(yīng)用到通過默認(rèn)插槽傳遞給它的元素或組件上,本文介紹了Vue3使用transition實(shí)現(xiàn)組件切換的過渡效果,需要的朋友可以參考下
    2024-09-09
  • uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能

    uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能

    微信小程序的存在許多功能上的限制和約束,有些情況不得不去使用webview進(jìn)行開發(fā)實(shí)現(xiàn)需求,這篇文章主要給大家介紹了關(guān)于uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 詳解vue2如何實(shí)現(xiàn)點(diǎn)擊預(yù)覽本地文件

    詳解vue2如何實(shí)現(xiàn)點(diǎn)擊預(yù)覽本地文件

    這篇文章主要為大家詳細(xì)介紹了vue2如何實(shí)現(xiàn)點(diǎn)擊預(yù)覽本地的word、excle、pdf文件,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • 一文詳解Vue的響應(yīng)式原則與雙向數(shù)據(jù)綁定

    一文詳解Vue的響應(yīng)式原則與雙向數(shù)據(jù)綁定

    使用 Vue.js 久了,還是不明白響應(yīng)式原理和雙向數(shù)據(jù)綁定的區(qū)別?今天,我們就一起來學(xué)習(xí)一下,將解釋它們的區(qū)別,快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Vue記住滾動條和實(shí)現(xiàn)下拉加載的完美方法

    Vue記住滾動條和實(shí)現(xiàn)下拉加載的完美方法

    這篇文章主要給大家介紹了關(guān)于Vue記住滾動條和實(shí)現(xiàn)下拉加載的完美方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue3+elementPlus?table中添加輸入框并提交校驗(yàn)

    vue3+elementPlus?table中添加輸入框并提交校驗(yàn)

    這篇文章主要介紹了vue3+elementPlus?table里添加輸入框并提交校驗(yàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • element的el-table中記錄滾動條位置的示例代碼

    element的el-table中記錄滾動條位置的示例代碼

    這篇文章主要介紹了element的el-table中記錄滾動條位置的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評論