.html页面引入vue并使用公共组件方式

   2023-02-07 学习力0
核心提示:目录.html页面引入vue并使用公共组件问题描述解决办法目录结构vue公共组件框架搭建步骤详述总结.html页面引入vue并使用公共组件问题描述整体项目采用传统 .html 文件搭建,vue仅作为渲染数据工具使用,需要使用的地方使用 script 标签引入。现有数个页面,每

.html页面引入vue并使用公共组件

问题描述

整体项目采用传统 .html 文件搭建,vue仅作为渲染数据工具使用,需要使用的地方使用 <script> 标签引入。

现有数个页面,每个页面都包含相同 headerfooter ,希望可以把 headerfooter 提取出来,避免太多重复代码。

解决办法

公共部分写在 .js 文件里,本质就是在当前页面中写的公共组件,组件规则遵从vue的组件规则。

template后面可以采用字符串拼接(内容少),或者是使用 `定义模板字符串。

目录结构

—test

——header.js //公共头部

——index.html //页面

——vue.js

.html页面引入vue并使用公共组件方式

index.html

<!doctype html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>test</title>
		<!--引入vue-->
		<script type="text/javascript" src="vue.js"></script>
		<!--引入公共组件-->
		<script type="text/javascript" src="header.js"></script>
	</head>
	<body style="font-size: 30px">
		<div id="vue_app">
			<!--自定义的组件使用-->
			<common-head></common-head>
			<!--页面自有内容-->
			<div style="background: #fba">我是内容</div>
		</div>
		</div>
	<script>
		//vue
		app_all=new Vue({
			el: "#vue_app"
		})
	</script>
	</body>

</html>

header.js

/*Vue.component('common-head',{
	template:'<div>'+
				'<h1>hhhhhhh</h1>' + 
				'<h1>duusdfsjkdfh</h1>' +
			  '</div>'
});*/
Vue.component('common-head',{
	template:`<div style="background: #baf">
				<h1>这是公共组件</h1>
				<h1>公共的头部</h1>
			  </div>`
});

vue公共组件框架搭建

最近在进行组件开发,为了方便组件的引用与维护,准备采用“npm本地文件file引入”的方式将组件从项目中解耦,并使用git进行组件的版本管理与协作开发。

file本地文件引入,会在项目中package.json文件添加依赖,但是不会在node_modules文件夹下安装组件库,组件会直接引用公用组件库中的的文件

步骤详述

1.使用vue init webpack-simple demo-ui 创建Vue组件项目

 不使用vue init webpack的原因是,组件开发中webpack安装会有大量依赖是无用的,webpack-simple对于组件来说已经足够了

.html页面引入vue并使用公共组件方式

2.src新增components文件夹用于存放组件文件

这里新增一个tooltip组件

.html页面引入vue并使用公共组件方式

3.根目录新增index.js文件,用于导出组件内容

//导出tooltip组件
import demoUI from './src/components/tooltip/tooltip'
if (typeof window !== 'undefined' && window.Vue) {
    window.Vue.component(demoUI.name, demoUI)
}
demoUI.install = function(Vue){
    Vue.component(demoUI.name, demoUI)
}
export default demoUI

4.package.json文件修改

// 权限设置,一定要为false 
private:false 
// 新增字段:main   require方法可以通过这个配置找到入口文件 
main:"./dist/demo-ui.js"

5.webpack.config.js文件修改

var path = require('path')
var webpack = require('webpack')
// 增加NODE_ENV常量,用于判断生产环境还是开发环境
const NODE_ENV = process.env.NODE_ENV
module.exports = {
	//生产环境下进入index.js文件   开发环境进入main.js    方便组件开发看效果
	entry: NODE_ENV == 'development' ? './src/main.js' : './index.js',
	output: {
	    path: path.resolve(__dirname, './dist'),
	    publicPath: '/dist/',
	    filename: 'demo-ui.js',		// 定义输出文件名
	    library: 'demo-ui',			// 定义require时的模块名
	    libraryTarget: 'umd',		// 指定输出格式
	    umdNamedDefine: true		// 对UMD构建过程中的AMD模块进行命名,否则使用匿名的define
	},
  devtool: '#eval-source-map'		//编译时是否生成map文件,不需要map文件,删掉该属性
	//其余配置默认即可
}

6.修改 index.html 文件

// 默认编译文件引入路径
<script src="/dist/build.js"></script>
// 这边编译文件定义为wafa-ui,路径修改为
<script src="/dist/demo-ui.js"></script>

7.配置完毕,webpack编译文件

运行 npm run build 编译文件

/dist/ 文件夹下生成 demo-ui.js 和 demo-ui.map.js 文件

8.其它项目使用该组件

“npm file引入” 安装公用组件库 npm install …/demo-ui        ps:wafa-ui需和其它项目在同一级目录下

main.js 文件全局引用组件

// 全局组件引入
import demoUI from "demo-ui"
Vue.use(demoUI)

具体业务中使用

<demoTooltip title=“这里是提示内容”> Tooltip内容 </demoTooltip>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文地址:https://blog.csdn.net/YYYYYun/article/details/100698279
 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 利用js实现html页面自动全屏代码
    html  script language="JavaScript"  top.window.moveTo(0,0);  //判断是否为IE浏览器  if (document.all)   {   top.window.resizeTo(screen.availWidth,screen.availHeight);  }  //判断是否为Netscape浏览器(document.layers是Netscape 4.
    03-08
  • flash传值给javascript,并在html页面输出 flash
    AS里面这样写:getURL("javascript:getval('"+变量+"')"); html里面这样写:script language="javascript" function getval(str) {// url是全局变量,函数正确执行alert("获取的值为:"+str); }/script
    03-08
  • javascript html页面中的内容替换
    script language="javascript"function ffRed(){ var xsxf = document.getElementById("id"); var str2 = "字段1"; var str3 = "字段2"; var reg=eval("/"+str2+"/gi"); var reg3=eval("/"+str3+"/g
    03-08
  • springboot访问template下的html页面 springboot项目访问html页面
    springboot访问template下的html页面 springboo
    一、template下文件不允许直接访问1、查资料得知:springboot项目默认是不允许直接访问template下的文件的,是受保护的。     所以想访问template下的html页面,我们可以配置视图解析器。2、如果想要用视图去展示,应该要设置好视图展示页面,比如说用一个
    03-08
  • 浏览器加载显示html页面内容的顺序
      我们经常看到浏览器在加载某个页面时,部分内容先显示出来,又有些内容后显示。那么浏览器加载显示html究竟是按什么顺序进行的呢 其实浏览器加载显示html的顺序是按下面的顺序进行的:1、IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同
    03-08
  • html页面中引入自签名证书的js web资源出现net:
    其实是浏览器客户端对自签名的内容认为不安全引起的,临时方法可以再浏览器中先直接访问下那个自签名的https地址,然后再访问有引用的那个页面就可以了。   以下内容引用自https://www.morong.me/?p=114作者: boris 分类: 技术文章 发布时间: 2017-11-2
    03-08
  • 让html页面中的文字不可选中 html禁止文字选中
    *{moz-user-select: -moz-none;-moz-user-select: none;-o-user-select: none;-khtml-user-select: none;-webkit-user-select: none;-ms-user-select: none;user-select: none;}
    03-08
  • ASP.NET C#根据HTML页面导出PDF
    ASP.NET C#根据HTML页面导出PDF
    在启明星采购系统里,新增了导出PDF功能。整个功能使用了第三方软件 wkhtmltopdf(下载) 官网 https://wkhtmltopdf.org/ 提供有更多版本下载他可以把HTML页面转换为PDF,该软件简直是incredible-不可思议了,功能太强大了。因为,我有一个HTML,引用了很多CS
    03-08
  • 基于webpack实现多html页面开发框架二 css打包、支持scss、文件分离
    基于webpack实现多html页面开发框架二 css打包
    本节主要介绍webpack打包的时候CSS的处理方式一、解决什么问题     1、CSS打包     2、CSS处理浏览器兼容     3、SASS支持     4、CSS分离成单独的文件二、创建目录结构   创建项目目录结构:参照上图创建即可三、需要安装的包  style-loade
    03-08
  • 弹出一个html页面 html弹出新窗口
     View Code 经过一上午的查找还是没有找到答案,中午在CSDN发了一个帖子,哈哈,答案找了。【1、最基本的弹出窗口代码】其实代码非常简单:script language="javascript"!--window.open ('page.html')--/script因为着是一段javascripts代码,所以它们应该放
    03-08
点击排行