成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

vue插件開發(fā)流程詳解-從開發(fā)到發(fā)布至npm(二)

Flink_China / 3345人閱讀

摘要:使用插件安裝使用測試訪問頁面注意大大的紅字,如果要在本項(xiàng)目下測試,需要修改項(xiàng)目名稱,不然報(bào)項(xiàng)目名字和包名字是一致的錯,無法安裝的如下結(jié)束語這個(gè)筆記繼上一篇插件開發(fā)流程詳解從開發(fā)到發(fā)布至一,替換了開發(fā)和測試的項(xiàng)目架構(gòu)。

  前記:上一篇 https://www.cnblogs.com/adouw...,說到了一個(gè)完整的vue插件開發(fā)、發(fā)布的流程,總結(jié)下來就講了這么一個(gè)事,如何注入vue, 如果封裝vue插件,如何測試vue插件,以及如何發(fā)布vue插件到npm。但是,這里開發(fā)測試到發(fā)布是分開在兩個(gè)項(xiàng)目的,未免有些多余,今天的筆記講的就是在上一篇的基礎(chǔ)上,重新?lián)Q了一下項(xiàng)目框架,講開發(fā)測試,到打包發(fā)布一個(gè)完整的項(xiàng)目,這個(gè)項(xiàng)目歡迎大家測試使用,一個(gè)基于vue上傳文件的一個(gè)插件,能夠顯示上傳的速度和進(jìn)度,如果是圖片的話,也可以顯示上傳預(yù)覽,有bug即時(shí)反饋哦!

1.項(xiàng)目架構(gòu)目錄:

這里采用的是vue-cli 腳手架,版本是2.**,vue-cli 3.0 已經(jīng)出來有一段了。今天暫不用3.0 的,回頭會詳細(xì)說上3.0的打包使用。項(xiàng)目目錄如下:

這個(gè)項(xiàng)目結(jié)構(gòu)直接用 vue init webapck vue-upload ,腳手架生的模版,大架構(gòu)我基本沒動,添加了一點(diǎn)自己的配置文件和新加了自己的文件夾。如下:

2.打包插件源碼的配置文件
var path = require("path")
var webpack = require("webpack")

module.exports = {
  entry: "./src/plugin/ajax-upload.js",
  output: {
    path: path.resolve(__dirname, "../dist"),
    publicPath: "/dist/",
    filename: "vueAjaxUpload.js",
    library: "vueAjaxUpload", // library指定的就是你使用require時(shí)的模塊名,這里便是require("vueAjaxUpload")
    libraryTarget: "umd", //libraryTarget會生成不同umd的代碼,可以只是commonjs標(biāo)準(zhǔn)的,也可以是指amd標(biāo)準(zhǔn)的,也可以只是通過script標(biāo)簽引入的。
    umdNamedDefine: true // 會對 UMD 的構(gòu)建過程中的 AMD 模塊進(jìn)行命名。否則就使用匿名的 define。
  },
  module: {
    rules: [
      {
        test: /.css$/,
        use: [
          "vue-style-loader",
          "css-loader"
        ],
      },      {
        test: /.vue$/,
        loader: "vue-loader",
        options: {
          loaders: {
          }
          // other vue-loader options go here
        }
      },
      {
        test: /.js$/,
        loader: "babel-loader",
        exclude: /node_modules/
      },
      {
        test: /.(png|jpg|gif|svg)$/,
        loader: "file-loader",
        options: {
          name: "[name].[ext]?[hash]"
        }
      }
    ]
  },
  resolve: {
    alias: {
      "vue$": "vue/dist/vue.esm.js"
    },
    extensions: ["*", ".js", ".vue", ".json"]
  },
  devServer: {
    historyApiFallback: true,
    noInfo: true,
    overlay: true
  },
  performance: {
    hints: false
  },
  devtool: "#eval-source-map"
}

if (process.env.NODE_ENV === "production") {
  module.exports.devtool = "#source-map"
  // http://vue-loader.vuejs.org/en/workflow/production.html
  module.exports.plugins = (module.exports.plugins || []).concat([
    new webpack.DefinePlugin({
      "process.env": {
        NODE_ENV: ""production""
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: true,
      compress: {
        warnings: false
      }
    }),
    new webpack.LoaderOptionsPlugin({
      minimize: true
    })
  ])
}

上面的配置文件也很簡單,主要就是入口文件和輸出文件,上面紅色標(biāo)記的部分,我們需要經(jīng)常修改的也是這個(gè)兩個(gè)參數(shù),下面的打包規(guī)則我們可以不用多管。

3.package.json 的執(zhí)行腳本的修改。

4.開發(fā)插件

在plugin下,新建ajax-upload.js ajax-upload.vue。

ajax-upload.js

import upload from "./ajax-upload.vue"
let ajaxUpload = {}
ajaxUpload.install = function (Vue, options) {
  Vue.prototype.$msg = "Hello I am test.js"
  Vue.prototype.$myMethod = function (arr) {
    if (arr.length < 0) {
      return false
    } else {
      arr = arr.join("連接你我")
      return arr
    }
  }
  Vue.component(upload.name, upload)
}
export default ajaxUpload

ajax-upload.vue





ajax-upload.js的講解: 引入同級目錄的ajax-upload.vue ,通過給一個(gè)自定義的對象添加install 方法,然后通過vue.component 方法注冊到vue。這里也可以給vue,通過原型方法注冊變量和方法。這里我們不需要,我們就只做了一個(gè)demo;

ajax-upload.vue的講解:里面具體的js業(yè)務(wù)邏輯不講解了,就提個(gè) props,和name 的屬性,我們通過這個(gè)方法接受到父組件(調(diào)用該組件的組件)傳遞過來的參數(shù),然后可以通過我們的定義的方法,如果是必須傳遞的參數(shù),沒有該參數(shù)我們就alert 提示;name 屬性就是調(diào)用的封裝的標(biāo)簽。為了減少項(xiàng)目的依賴插件的個(gè)數(shù),我們也直接使用css不使用less等。

5.本地測試開發(fā)的插件的使用:

在dev文件夾下新建文件 dev-upload.vue

代碼:





這里使用組件就不直接在main.js下引入插件,直接在使用該插件的組件中,引入,然后通過vue.use 的方法使用組件:

import Vue from "vue"
import hupload from "../plugin/ajax-upload.js"
Vue.use(hupload)

使用組件,傳遞參數(shù)和接受參數(shù)

 

這里組件的通信 父組件 -> 子組件, 子組件 -> 父組件 ,通過props 接受到父組件的參數(shù),通過事件的方式接受子組件傳遞過來的參數(shù)。

當(dāng)然,要看到這個(gè)組件的使用是否正確,就要看頁面了,頁面路由 vue-router 如下:

訪問頁面正常顯示,沒有報(bào)錯:

6.打包插件,并本地測試插件

上面第5步驟已經(jīng)展示了插件是可以使用的,接下里就是打包了。

執(zhí)行:

npm run dist

本地測試,先開頁面路由:

訪問頁面,沒有報(bào)錯:

以上看到了插件的引入方式不同。

7.發(fā)布插件

測試OK了,接下里就是發(fā)布了(假設(shè)你這里已經(jīng)登陸npm了),執(zhí)行命令:

npm publish

記住,每發(fā)布一次,需要修改package.json 的版本號:

不然報(bào)錯。

發(fā)布完之后,我們就可以轉(zhuǎn)到我們的npm 官網(wǎng)上看看我們的項(xiàng)目。

https://www.npmjs.com/package...

8.使用插件

安裝使用:
npm install vue-ajax-upload --save

測試:

訪問頁面:

注意:大大的紅字,如果要在本項(xiàng)目下測試,需要修改package.json 項(xiàng)目名稱,不然報(bào)項(xiàng)目名字和包名字是一致的錯,無法安裝的,如下;

  結(jié)束語: 這個(gè)筆記繼上一篇 vue插件開發(fā)流程詳解-從開發(fā)到發(fā)布至npm(一),替換了開發(fā)和測試的項(xiàng)目架構(gòu)。除了在npm 登陸的那快,基本都是可以跳過上一篇,直接看這篇的,這個(gè)插件可以顯示上傳圖片預(yù)覽,上傳速度和上傳進(jìn)度,如果需要講解這部分話,請?jiān)谙路搅粞?,我會多帶帶開一篇講解這部分的內(nèi)容。接下來的任務(wù),還是需要做的vue 插件按需加載插件的方法,盡情期待我下一篇的筆記。如有不足,敬請指教,

如果覺得好的話,GitHub項(xiàng)目地址,麻煩給個(gè)star 呀!

如需轉(zhuǎn)載,請說明轉(zhuǎn)載出處。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97813.html

相關(guān)文章

  • 前端開發(fā)之走進(jìn)Vue.js

    摘要:作為目前最熱門最具前景的前端框架之一,其提供了一種幫助我們快速構(gòu)建并開發(fā)前端項(xiàng)目的新的思維模式。的新版本,的簡稱。的包管理工具,用于同一管理我們前端項(xiàng)目中需要用到的包插件工具命令等,便于開發(fā)和維護(hù)。 Vue.js作為目前最熱門最具前景的前端框架之一,其提供了一種幫助我們快速構(gòu)建并開發(fā)前端項(xiàng)目的新的思維模式。本文旨在幫助大家認(rèn)識Vue.js,了解Vue.js的開發(fā)流程,并進(jìn)一步理解如何通...

    zxhaaa 評論0 收藏0
  • 前方來報(bào),八月最新資訊--關(guān)于vue2&3的最佳文章推薦

    摘要:哪吒別人的看法都是狗屁,你是誰只有你自己說了才算,這是爹教我的道理。哪吒去他個(gè)鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰和你做朋友太乙真人人是否能夠改變命運(yùn),我不曉得。我只曉得,不認(rèn)命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...

    izhuhaodev 評論0 收藏0
  • 淺談使用 Vue 構(gòu)建前端 10w+ 代碼量的單頁面應(yīng)用開發(fā)底層

    摘要:其實(shí)就是我們開始掛載上去的我們在這里出去,我們就可以在回調(diào)里面只處理我們的業(yè)務(wù)邏輯,而其他如斷網(wǎng)超時(shí)服務(wù)器出錯等均通過攔截器進(jìn)行統(tǒng)一處理。 showImg(https://segmentfault.com/img/remote/1460000015472616?w=845&h=622); 開始之前 隨著業(yè)務(wù)的不斷累積,目前我們 ToC 端主要項(xiàng)目,除去 node_modules, bu...

    rickchen 評論0 收藏0
  • 淺談使用 Vue 構(gòu)建前端 10w+ 代碼量的單頁面應(yīng)用開發(fā)底層

    摘要:其實(shí)就是我們開始掛載上去的我們在這里出去,我們就可以在回調(diào)里面只處理我們的業(yè)務(wù)邏輯,而其他如斷網(wǎng)超時(shí)服務(wù)器出錯等均通過攔截器進(jìn)行統(tǒng)一處理。 showImg(https://segmentfault.com/img/remote/1460000015472616?w=845&h=622); 開始之前 隨著業(yè)務(wù)的不斷累積,目前我們 ToC 端主要項(xiàng)目,除去 node_modules, bu...

    Backache 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<