鍍金池/ 問答/HTML/ Vue 單組件打包導(dǎo)出到為普通頁面可以調(diào)用的 JS?

Vue 單組件打包導(dǎo)出到為普通頁面可以調(diào)用的 JS?

我的需求是:

使用 Vue 開發(fā) 插件,然后生成 JS,以便在其它網(wǎng)頁中調(diào)用。

問題是:

1)使用Vue 嵌入到普通html或者說普通JS當(dāng)中,不能實現(xiàn)很好的封裝。即將開發(fā)的文件很難以單文件形式保存,然后隨便拿來調(diào)用

2)以Vue-Cli搭建Vue項目,使用 npm run build 打包出來的 JS 無法在其它網(wǎng)頁中調(diào)用,只能用它自己構(gòu)建的index.html來使用。(這樣的話開發(fā)的東西擴展性太差)
【不知道我的那部分出現(xiàn)了錯誤】

3)Vue-cli搭建項目,使用 Vue.component install 方法注冊全局組件,這種組件在 Vue-cli搭建的項目里面可以使用,要怎么配置,才能使得 build 的 JS 使得其他網(wǎng)頁 能夠以 <script>標(biāo)簽引入,并且使用 Vue.use()就可以使用

(我知道純粹用 Vue+webpack 構(gòu)建代碼比較爽快,但是 我的項目是一個 基于laravel的項目,并且頁面中使用了后臺模板的一些功能,當(dāng)然,肯定是多頁面應(yīng)用了,所以采用單一Vue來開發(fā)有些行不通。但是又看到Vue的強大魅力,想用它來重寫 網(wǎng)站的 markdown 編輯器,目前的問題就是不知道怎么把這個編輯器封裝好。 )

回答
編輯回答
舊時光

我理解你的意思是:在一個頁面中引入一個包含vue組件的js, 然后直接就可以通過調(diào)用的方法引入這個組件并使用了?例如這樣

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <!-- 引入樣式 -->
  <link rel="stylesheet" >
</head>
<body>
  <div id="app">
    <!-- **調(diào)用你寫的組件** -->
    <el-button @click="visible = true">按鈕</el-button>
    <el-dialog :visible.sync="visible" title="Hello world">
      <p>歡迎使用 Element</p>
    </el-dialog>
  </div>
</body>
  <!-- 先引入 Vue -->
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <!-- **引入你寫的組件庫** -->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <script>
    new Vue({
      el: '#app',
      data: function() {
        return { visible: false }
      }
    })
  </script>
</html>

建議看下element-ui的package.json文件中打包成js是怎么實現(xiàn)的,github地址:https://github.com/ElemeFE/el...

2017年12月19日 04:41
編輯回答
神經(jīng)質(zhì)

額,問題解決了。分享一下。

首先,我先糾正一下這個問題的題目:

原:Vue 單組件打包導(dǎo)出到為普通頁面可以調(diào)用的 JS?

現(xiàn)改為:Vue 插件開發(fā)?(按照這個思路,很快就能夠找到答案)

是的,原本的提問本來就有些問題,因為只知道需求而對Vue術(shù)語不太了解,導(dǎo)致方向錯誤,從而在查找答案的過程中很難搞清楚。
(在 @tomc 給的建議中,我先是查看了 element-ui的webpack.config.js .由于對于webpack一知半解所以沒怎么搞清楚。后來迫于無奈,只好去看vue的官方文檔??吹焦俜轿臋n中有提到插件這一說法,索性看了下,才明白,我的這種需求應(yīng)該是屬于插件范疇,所以在網(wǎng)上找到 vue 插件開發(fā)的文章看了下,問題得到j(luò)ie'jue)

OK,說正事兒。參考文章:http://www.imooc.com/article/... (10分鐘教你快速開發(fā)一個vue插件并發(fā)布npm)

首先,得先搞清楚Vue 所開發(fā)的插件的幾種引用方式:

ES6 
import vuePayKeyboard from 'vue-pay-keyboard' 
// 通過require 導(dǎo)入 
var vuePayKeyboard = require('vuePayKeyboard')
// 通過use掛載 
Vue.use(vuePayKeyboard) 
// 或者直接導(dǎo)入js文件 
<script src="./dist/vue-pay-keyboard.js"></script>

大概總結(jié)下就是

  1. 在模塊化開發(fā)中引用(使用npm安裝,通過es6的import導(dǎo)入,然后Vue.use())
  2. 普通html頁面引入(通過<script>標(biāo)簽引入)

而我要做的,就是通過模塊化開發(fā)的流程,開發(fā)出插件來,以滿足在普通HTML頁面調(diào)用的需求

具體實踐過程呢,在參考文章中已經(jīng)說的很詳細(xì)。這里總結(jié)下比較重要的幾點

  1. 所開發(fā)的組件應(yīng)實現(xiàn)公開方法 install
  2. webpack 入口文件修改為注冊插件index.js
  3. libraryTarget設(shè)置為 'umd'

ok,再具體的還是就看參考文章里,再放下地址

參考文章:http://www.imooc.com/article/... (10分鐘教你快速開發(fā)一個vue插件并發(fā)布npm)

2017年7月26日 01:34