vue组件如何被其他项目引用


Posted in Javascript onApril 13, 2017

自己写的vue组件怎么才能让其他人引用呢,或者是共用组件如何让其他项目引用。本文就粗细的介绍下,如有疑问欢迎共同讨论。在这里你能了解下如下知识点:

1. 如何发布一个包到npmjs仓库上

2.如何引用一个npm包,尤其是本地引用

3.vue组件的两种引用方案

一、发布一个包到npm的步骤

在npmjs.org上注册一个账号
然后进入命令提示窗口输入:

  • npm adduser: 进入添加用户
  • Username your name: 设置用户名
  • Password your password: 设置密码
  • Email youremail:设置邮箱

vue组件如何被其他项目引用

登录信息都保存在用户目录下的.npmrc文件中(以token的方式保存)

      npm publish:发布包

执行npm publish这前,请切换到需要发包的项目根目录下。

vue组件如何被其他项目引用

      npm unpublish --force:移除一个发布包(也可以移除指定版本的包)

注意:

  • 发包前必须要在npmjs上注册一个账号
  • 每次发布的时候都需要重新更新版本
  • 也可以用npm logout登出用户,用npm login登录用户

vue组件如何被其他项目引用

二、build方式引用vue组件

示例使用的是本地安装一个npm包。因为把包发布到npmjs,然后再npm到项目中太过麻烦(由于我们要做来回调整和测试)。实现vue组件三步骤:

1. 配置组件(被引用的组件),可以省略

配置package.json,主要是增加main节点

"main": "index.js"

主是main的这个节点,如果不配置,我们在其他项目中就不用import XX from '包名'来引用了,只能以包名作为起点来指定相对的路径。

导出可供外部访问的组件

import VueTree from './components/Hello'
module.exports = {
 VueTree
}

主要是导出可以让外部访问的组件,这里没有直接导出main.js,是因为我们所需要的是一些子组件,而根组件(因为他存在直接挂载到dom上的操作)。

编写打包成为一个组件的脚本

var webpack = require('webpack')
var path = require('path')
var vueLoaderConfig = require('./vue-loader.conf')

function resolve (dir) {
 return path.join(__dirname, '..', dir)
}

var opt = {
 entry: {
 'vue-tree-common': './src/comp.js'
 },
 output: {
 path: resolve('dist'),
 filename: '[name].js',
 library: 'vue-tree-common',
 libraryTarget: 'commonjs2' //注意这里,打包的标准
 },
 resolve: {
 extensions: ['.js', '.vue'],
 modules: [
  resolve('src'),
  resolve('node_modules')
 ]
 },
 module: {
 rules: [
  {
  test: /\.vue$/,
  loader: 'vue-loader',
  options: vueLoaderConfig
  },
  {
  test: /\.js$/,
  loader: 'babel-loader',
  include: [resolve('src'), resolve('node_modules')]
  }
 ]
 }
}

var compiler = webpack(opt)
compiler.run(function(err, state) {
 console.log(err)
})

此种打包方式会将此组件的所有引用打包成一个文件,还是存在不合理的现象。

生成包 通过上述三个步骤的配置,只需要运行打包成组件的脚本就可以生成发布包了。

2、本地如何引用npm包(安装发布好的包)

用命令模式进入开发项目文件夹,用命令安装包。npm install --save 本地路径  即可。

npm install --save D:\MyProject\vue2-tree

3、根据包名直接定位组件

<template>
 <div id="app">
 <img src="./assets/logo.png">
 <hello></hello>
 <VueTree></VueTree>
 </div>
</template>

<script>
import Hello from './components/Hello'
import {VueTree} from 'vue-tree/dist/vue-tree-common' //重点

export default {
 name: 'app',
 components: {
 Hello, 
 VueTree
 }
}
</script>

<style>
#app {
 font-family: 'Avenir', Helvetica, Arial, sans-serif;
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
 text-align: center;
 color: #2c3e50;
 margin-top: 60px;
}
</style>

此处我用的是import {VueTree} from 'vue-tree/dist/vue-tree-common这种方式引入的包,因为在原到用的package.json中main节点配置的index.js。

三、更为直接的引用vue组件

  • 我们还需要npm本地安装或者再现安装;
  • 按照如下图所示引用:

vue组件如何被其他项目引用

四、总结

  • vue的版本需要一致,如果不一致需要调整。
  • vue的几种打包方式:UMD、common、esm。
  • vue分为部分和完成打包,区别就是template的支持。
  • vue组件样式存在图片的引用时,请使用单独的样式引入,因为组件的引入是不带图片的。
  • “build方式引用vue组件”此方式可以把组件打成不同的包,方便不同规范引用。

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js玩一玩WSH吧
Feb 23 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
Mar 04 Javascript
用js模拟JQuery的show与hide动画函数代码
Sep 20 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
Mar 01 Javascript
javascript实现简单的二级联动
Mar 19 Javascript
jQuery实现的简单拖动层示例
Feb 22 Javascript
vue项目中api接口管理总结
Apr 20 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
Jan 18 Javascript
vue-next/runtime-core 源码阅读指南详解
Oct 25 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 Javascript
微信小程序实现同时上传多张图片
Feb 03 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
Apr 13 #Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 #jQuery
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
Apr 13 #Javascript
JS实现移动端实时监听输入框变化的实例代码
Apr 12 #Javascript
详解vue的数据binding绑定原理
Apr 12 #Javascript
angular学习之ngRoute路由机制
Apr 12 #Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
Apr 12 #Javascript
You might like
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
php文件上传类的分享
2017/07/06 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
Python 修改列表中的元素方法
2018/06/26 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
电子商务专业个人的自我评价
2013/12/19 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python