web前端模块化框架,一句代码让html可直接引入别的html文件

2023-11-14

web前端模块化框架

介绍

一个web前端模块化框架,可以引入模板html文件,利于前后端分离的网站重复代码以及模块的复用。

软件架构

本框架是利用mloader.js文件加载带有mloader-template的类的标签从而进行的文档的动态复用。

安装教程

1. 在需要使用模块化的前端页面的head标签内引入mloader.js文件。
2. 在需要使用模板的前端页面的使用位置添加带有mloader-template的类的标签。

开始使用

1. index.html中在head标签中引入mloader.js文件。
<head>
    <meta charset="utf-8" />
    <script src="js/mloader.js"></script>
</head>
2. index.html中在需要模板的位置添加带有mloader-template的类的标签。
<div class="mloader-template" url="template/demo-template.html" data='data1'></div>
3. index.html中如果需要传递参数,则需要在标签中添加json参数数据。
//此处的data1名称需要和第二步中的data的值一样。
var data1={
    content:"你好,我是模板!"
};
4. template.html中在使用模板中利用{content}来接收参数。
//此处{}中的值需要和json中的key相对应。
<div>{content}</div>

高级用法

说明:模板中所用到文件引用相关的相对路径,必须为相对于引用模板的路径,模板嵌套模板也需要使用最初时的引用路径。
1. 模板可以嵌套使用,一个模板嵌套另一个模板,就像和在html中使用一样。
2. 模板可以引用外部js文件,引用时需要用到<import-js src=""></import-js>标签,src的值为js文件路径。
3. 模板可以引用外部css文件,引用时需要用到<import-css src=""><import-css>标签,src的值为css文件路径。
4. 模板中可以任意使用内联js和css。
5. 模板中的图片相对路径也必须相对于最初时的引用路径。
6. 模板可以使用if和for标签。
(1)if使用可以用m-if、m-elif、m-else三个属性,目前一个模板只允许使用一个条件判断,后期再做更新。
(2)for使用可以用m-for属性,数据可以用"."读取。

例如:

//index.html中构建数据。
<script>
    function getList1(){
        return [1,2,3,4];
    }
    function getList2(){
        return [{city:{city1:"长沙",city2:"岳阳"},pro:"湖南"},{city:{city1:"武汉",city2:"咸宁"},pro:"湖北"}];
    }
    var data1={
        content:"你好,我是模板!",
        booleanTest1:true,
        booleanTest2:false,
        booleanTest3:false,
        listTest1:getList1(),
        listTest2:getList2()
    };
</script>
//template.html中if使用,打印结果为:booleanTest1 is true!。
<div m-if="booleanTest1">
    booleanTest1 is true!
</div>
<div m-elif="booleanTest2">
    booleanTest2 is true!
</div>
<div m-elif="booleanTest3">
    booleanTest3 is true!
</div>
<div m-else>
    booleanTest1 and booleanTest2 all is false!
</div>
//temlate.html中for使用,打印结果为:序号:0,数据:1 序号:1,数据:2 序号:2,数据:3 序号:3,数据:4。
<div m-for="listTest1">
    序号:{index},数据:{item}
</div>
//temlate.html中for使用,打印结果为:序号:0,数据:1----长沙;2----岳阳;3----湖南 序号:1,数据:1----武汉;2----咸宁;3----湖北。
<div m-for="listTest2">
    序号:{index},数据:1----{item.city.city1};2----{item.city.city2};3----{item.pro}
</div>
//if判断中可以使用&&与||条件语句
<div m-if="{booleanTest1&&booleanTest2}">
	我是多条件语句测试!
</div>
//当if判断嵌套在for循环中时使用
<div m-for="listTest2">
	我是for循环测试语句!
	<div m-if="{item.b1&&item.b2}">
		我是for循环嵌套if的测试语句!
	</div>
</div>
7. 关于js动态添加模板,需要在动态添加完成模板后调用reloader()函数。
//index.html中的html代码。点击click按钮,模板内容才加载出来。
<button onclick="ck()">click</button>
<div id="test"></div>
//index.html中的js代码。
<script>
    function ck(){
        var htmlTag = document.getElementById("test");
        htmlTag.innerHTML="<div class=\"mloader-template\" url=\"template/demo-template.html\" data='data1'></div>";
        //动态插入template模板后需要手动调用reloader函数。
        //不传参数表示刷新整个页面
        reloader();
        //传参数表示刷新传入的dom
        reloader(htmlTag);
    }
</script>

注意事项

1. data数据必须在head标签里面定义。
2. 同一页面内引用的多个模板内如果有script代码,定义的函数名字都不能相同。
3. 涉及到局部添加模板时,请使用reloader(‘要刷新的dom,即刚添加的模板dom’)进行刷新。

项目代码

https://gitee.com/xuqingcode/mloader

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web前端模块化框架,一句代码让html可直接引入别的html文件 的相关文章

  • 输入和文本区域可以拖动吗?

    MDN 规范以及我能通过 Google 找到的每个网站都说所有 HTML 元素都可以拖动 然而 在实践中 我发现我无法拖动文本输入或文本区域 即使它们已被禁用 例如 使用以下代码 img src http www placehold it
  • 为缺少字体的 Web 浏览器降低 Unicode 字符的质量

    我在 html 文档中使用 Unicode 检查标记 U 2713 我发现它在大多数浏览器中都可以正常显示 但偶尔我会遇到有人的电脑上缺少字体 如果字体丢失 是否有 HTML JS 技巧来指定替代显示字符 或图像 没有直接的方法可以判断任何
  • 向上/向下滚动到带有固定按钮的部分

    我想构建一个用于向上 向下滚动到页面部分标签的脚本 我的源代码如下所示 HTML div class move div class previous UP div div class next DOWN div div section Fi
  • 您最喜欢的 JS/CSS 下拉菜单是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 希望在网站上实现一个 只是好奇其他人都使用过什么以及他们有过什么样的体验 EDIT我也不是一个超级粉丝
  • 当 mp4 是唯一来源时,自定义 HTML5 视频控件不起作用

    问题 我只有一个视频源 mp4 因为我正在尝试向 tumblr 视频添加自定义控件 如果只有mp4作为源video duration返回为NaN 作为使用 3 个源 mp4 webm ogg 时的测试 它可以工作 所以video durat
  • 与 body 相比,将 css 规则应用于 html 有什么区别?

    我看不出以下之间的区别 html background f1f1f1 and body background f1f1f1 有什么解释吗 没有真正的区别 如果你只是谈论在哪里申请background 否则BoltClock 对另一个问题的回
  • HTML 嵌入对象具有灰色背景。可以透明吗?

    我使用带有开源插件的 Firefox 来播放视频 视频被 尽可能好地 缩放以适应嵌入对象的宽度和高度中定义的可用空间 但有时右侧和 或底部会有一点灰色边框 看来这不是我的父 div 的背景颜色 因为更改它根本没有效果 这是 HTML div
  • 如何在 iframe 加载时向页面添加加载指示器?

    我当前正在创建一个页面 单击链接后 iframe 将插入到 div 中并加载其内容 我使用以下 jQuery 调用来执行此操作 mydiv html 有时会加载源内容very慢慢地 结果看起来什么也没有发生 我希望在 iframe 内容加载
  • JavaScript 中的 jstl

    可以在javascript中使用jstl吗 我正在绑定设置
  • IndexedDB - 对象存储与多个数据库与索引?

    我想知道什么时候使用单个数据库与具有多个对象存储的数据库是一个好主意 我阅读了网络上的大多数教程并查看了 indexedDB 的规范 但找不到比较这些不同概念的好例子 有没有人有此类事情的具体示例 使用多个对象存储和 或代码的设计模型 只要
  • 防止隐藏的输入被更改

    这一直让我压力很大 我有一个隐藏的输入
  • Angular4 - 滚动到锚点

    我正在尝试对同一页面上的锚元素进行简单的滚动 基本上 用户点击 尝试 按钮 它就会滚动到页面下方 ID 为 登录 的区域 现在 它正在与一个基本的id login a href login a 但它正在跳转到该部分 理想情况下 我希望它滚动
  • 如何在我的 html 中使用 Flaticon 中的图标?

    我想给我的网站一些图标 现在我看到很多人使用Flaticon这个网站 我所做的就是在 CSS 中添加这样的内容 Font 1 font face font family Flaticon1 src url flaticon1 eot src
  • 监听服务响应 JavaScript

    背景 我正在为网页制作 Chrome 扩展程序 在此网页中 我需要捕获用户发出 POST 请求时服务器发送的响应 目前 我们使用观察者模式来检查 HTML 页面上的更改 但这很笨拙并且会触发多次 客观的 我需要捕获该响应 相应地解析其信息
  • 如果执行了锚点 href 链接,则禁用 onClick 事件

    我有一张桌子 每一行都是一个由 js 调用的某个页面 例如 google com 的链接 onClick window open 方法 tr class tr 在最后一栏中我有一个锚点链接链接到其他页面 例如 jsfiddle td cla
  • php 中的 stackoverflow 上有这样的成就系统吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 从概念上讲 如何使用 PHP 和 MySQL 为网站编写一个成就系统 唯一真正的方法是不断执行 MySQL 查询来测试成绩等吗 您有两
  • IE10中的图像插值

    这是我的用例 我有一个采用响应式设计的网页 该页面垂直分成两半 我想在右侧显示图像 呈现为 PNG 或 JPG 的 PDF 页面 调整窗口大小后 图像的大小应立即更改 我以为我已经解决了这个问题 我将服务器上的图像渲染得足够大 以适应最大可
  • Gmail 和 Google Chrome 12+ 中的“从剪贴板粘贴图像”功能如何工作?

    我注意到一个来自 Google 的博文 http gmailblog blogspot com 2011 06 pasting images into messages just got html其中提到 如果您使用的是最新版本的 Chro
  • 如何在html中设置按钮的文本大小

    您好 我想在我的网站上有一个按钮 并且我想调整按钮上的文本大小 我该怎么做呢 我的代码如下
  • Onblur 事件在另一个 div 的 onclick 之前触发

    如上所述 我有一个按钮 单击该按钮将打开子菜单 对于子菜单中的每个选项 都有三个元素 我认为实际上还有更多元素 但为了简单起见 将其保留为 3 我将焦点放在子菜单的主 div 白色 框架 上 Onblur 这个 div 然后我隐藏子菜单 这

随机推荐

  • 数据开放共享的重要性_为什么今天开放数据很重要

    数据开放共享的重要性 任何变化的主要因素首先是观察 我们收集的数据使我们能够分析复杂的人类模式和行为 没有数据 什么也观察不到 一段时间以来 政府一直在收集大量数据 但是现在 他们正式使公民可以访问这些数据 奥巴马总统最近宣布启动 机会项目
  • AVPlayer视频播放

    AVFoundation中的元数据 Apple环境下的媒体类型主要有四种 QuickTime mov MPEG 4 video mp4和m4v MPEG 4 audio m4a MPEG Layer III audio mp3 使用元数据
  • PostgreSQL和mysql语法区别详解通俗易懂

    目录 0 PostgreSQL的数据类型 0 1 数值数据类型 0 2 字符串数据类型 0 3 日期 时间数据类型 0 4 布尔类型 0 5 货币类型 0 6 几何类型 1 PostgreSQL创建表 1 1 建表之前 创建自增序列 1 2
  • 数据结构(1)—— 程序性能分析

    目录 1 什么是程序性能 2 空间复杂度 2 1 空间复杂度的组成 3 时间复杂度 3 1 时间复杂度的组成 1 什么是程序性能 所谓程序性能 performance of a program 是指运行这个程序所需要的内存和时间的多少 一个
  • Linux常见命令

    ifconfig 查看ip vi filename 打开或新建文件 并将光标置于第一行首 mkdir dir1 创建一个叫做 dir1 的目录 mkdir dir1 dir2 同时创建两个目录 rm f file1 删除一个叫做 file1
  • 两个二维数组合并

  • 重磅发布

    导语 后疫情时代 随着各行业线下业务与线上业务的深度结合转型 流量思维的增量导向逐渐转向降本增效 虚假流量已经成为互联网时代信息化数字资产最大的威胁之一 据极验最新行业数据统计 各个行业都有较高比例的虚假流量存在 机器流量最为泛滥的区块链行
  • Flutter实现类似Android中的PopupWindow控件

    最近在网上看到一段话 产品有三宝 弹窗 浮层加引导 设计有三宝 透明 阴影加圆角 运营有三宝 短信 push加红包 在日常开发中经常会遇到弹窗 浮层之类的效果 这些在Android中实现很简单 可以用PopupWindow完成 但是在flu
  • 静态映射和动态映射

    1 为什么需要映射 在内核启动过程中会开启MMU 建立虚拟映射表 以后内核使用的都是虚拟地址 但是我们查询数据手册得到I O寄存器地址都是物理地址 于是需要将物理地址转换到虚拟地址 这样才能在内核空间去访问I O寄存器 物理地址转换到虚拟地
  • Linux下配置pptp协议之拨号上网

    首先安装pptp sodo apt get install pptp linux y 创建连接 sudo pptpsetup create nodeName server yourServerAddr username xxx passwo
  • zookeeper的安装部署

    1安装zookeeper集群 上传安装包 移动到指定文件夹 mv zookeeper 3 4 6 tar gz opt apps 3 解压 tar zxvf zookeeper 3 4 6 tar gz 4 修改配置文件 1 进入到conf
  • Git介绍及常用命令

    Git介绍及常用命令 在软件开发过程中 团队协作基本上都会使用到git git可以使得团队开发效率变高 因此 我们接下来介绍git的使用方法 国内一般使用gitee 当然 也可以使用github github是国外的 所以加载慢 甚至加载不
  • SQL知识整理三:变量、全局变量、视图、事务、异常

    SQL知识整理三 变量 全局变量 视图 事务 异常 参考文章 1 SQL知识整理三 变量 全局变量 视图 事务 异常 2 https www cnblogs com chengxingliang p 3333277 html 备忘一下
  • 【马普所2008】机器学习中的核方法(上)

    Hofmann T Sch Lkopf B Smola A J Kernel methods in machine learning J Annals of Stats 2008 36 3 1 Integrating structured
  • Spring的事务隔离级别

    Spring的事务隔离级别是用于控制事务并发访问数据库时的行为 Spring框架提供了五个事务隔离级别 分别是 1 DEFAULT 默认 使用数据库默认的事务隔离级别 在大多数情况下 这等同于使用READ COMMITTED级别 2 REA
  • 使用纯java ssh方式连接linux服务器,并用此方式部署war到linux的tomcat下

    b 纯java代码使用ssh方式登录linux服务 实际应用中 可以使用这种方式上传部署web工程war包 并且部署启动tomcat 一个自动化完成所有工作 起到节省时间作用 1 去 url http www jcraft com jsch
  • QIIME2-DADA2&Deblur

    Deblur使用序列错误配置文件将错误的序列与从其来源的真实生物序列相关联 从而得到高质量的序列变异数据 主要为两个步骤 DADA2 质控 汇总版 qiime dada2 denoise single i demultiplexed seq
  • notepad 自动换行 分屏 快捷键

    一 自动换行 视图 gt 自动换行 二 分屏 Tab标签 上方文件名 右键 gt 移动到另一视图 三 快捷键 快速复制 Ctrl D 区块注释 Ctrl Shift Q 保存所有打开文件 Ctrl Shift S 行注释 Ctrl K 取消
  • 内卷化时代,一名普通测试员的铁饭碗究竟是什么?

    内卷 是现在热度非常高的一个词汇 随着热度不断攀升 隐隐有了 万物皆可卷 的程度 究其来源 内卷这个词的出现 是伴随着996开始讨论的 很不幸 996 福报等等这些词的重灾区和源头就是计算机 互联网行业 那么作为行业中一个非常重要的分支 测
  • web前端模块化框架,一句代码让html可直接引入别的html文件

    web前端模块化框架 介绍 一个web前端模块化框架 可以引入模板html文件 利于前后端分离的网站重复代码以及模块的复用 软件架构 本框架是利用mloader js文件加载带有mloader template的类的标签从而进行的文档的动态