js创建js/json文件,并且写入数据 纯静态页面?

一、前端(架构)发展史

最初,前端是没有架构的,因为功能简单的代码没有架构可言。通过操作DOM就能完成的工作,不需要复杂的设计模式和代码管理机制,也就不需要架构来支撑起应用。前端开发的发展历史分为以下几个阶段:

● 古典时期。由后端渲染出前端 HTML,用 Table 布局,用 CSS 进行简单的辅助。
● 动效时期。前端开始编写一些简单的 JavaScript 脚本来做动画效果,如轮播广告。
● Ajax 异步通信时期。2005年,Google 在诸多 Web 应用中使用了异步通信技术如 Google 地图,开启了 Web 前端的一个新时代。

一旦前端应用需要从后端获取数据,就意味着前端应用在运行时是动态地渲染内容的,这便是 Model(模型)UI 层解耦。jQuery 能够提供 DOM 操作方法和模板引擎等。这时的开发人员需要做下面两个事情:

● 动态生成 HTML。由后端返回前端所需要的 HTML,再动态替换页面的 DOM 元素。早期的典型架构如 jQuery Mobile,事先在前端写好模板与渲染逻辑,用户的行为触发后台并返回对应的数据,来渲染文件。
● 模板分离。由后端用 API 返回前端所需要的 JSON 数据,再由前端来计算生成这些 HTML。前端的模板不再使用 HTML,而是使用诸如 Mustache 这样的模板引擎来渲染 HTML。

由于 HTML 的动态生成、模板的独立与分离,前端应用开始变得复杂。后端的 MVC 架构进一步影响了前端开发,便诞生了一系列早期的 MVC 框架,如 Backbone,Knockout,等等。

十一、非 webpack 构建的微应用

一些非 webpack 构建的项目,例如 jQuery 项目、jsp 项目,都可以按照这个处理。

接入之前请确保你的项目里的图片、音视频等资源能正常加载,如果这些资源的地址都是完整路径(例如 https://qiankun.umijs.org/logo.png),则没问题。如果都是相对路径,需要先将这些资源上传到服务器,使用完整路径。

同时,你也需要开启相关资源的 CORS,具体请参照

十二、Vite 构建的微应用

目前没有很好的支持,具体可以参考这个官方仓库 。

社区还有一个封装好的 vite 插件 ,可以试试。

如果微应用不是直接跟路由关联的时候,你也可以选择手动加载微应用的方式:

十四、统一加载多个应用

多个应用的手动启动比较麻烦,这里我们可以通过 npm scripts 来快速启动多个应用。

  1. 在所有应用的父目录下配置 npm scripts 启动脚本:

还支持并行运行多个任务。

需要注意如果脚本退出时返回空值,所有其它子进程都会被 SIGTERM 信号中断,可以用--continue-on-error 参数禁用行为。

# 然后同时运行 c 和 d; # 你可以使用 Glob 通配符来匹配任务名称,方便指定多个名称相似的任务,和标准语法不同的是分隔符由 / 改为 : 以适应需要。 # 匹配分隔符,所有以 watch: 开头的脚本都会被运行。 # 在脚本名称后使用双引号包裹来提供参数,甚至还支持用占位符,延迟到运行命令时再提供参数。

更多使用方式参考 官方稳定。

十五、加载过程的生命周期

registerMicroApps 方法的第二个参数可以配置加载子应用过程的生命周期钩子。

比如我们利用这些接口给子应用加入加载动画等功能。


 
}
//plugins 这个能够不传,可是请不要传空数组过来 //处理富文本赋值问题 //若是有附件,上传附件 //为函数添加原型链上的方法 ,auto:false //是否选完文件后自动上传 若是设定 false,那么须要设置 bindAction 参数来指向一个其它按钮提交上传 ,size:0 //设置文件最大可容许上传的大小,单位 KB。不支持ie8/9; 0(即不限制) //是否容许多文件上传。设置 true便可开启。不支持ie8/9 ,done: function(res, index, upload){ //执行上传请求后的回调。返回三个参数,分别为:res(服务端响应信息)、index(当前文件的索引)、upload(从新上传的方法,通常在文件上传失败后使用) //改变预览状态,将上传附件id存在 隐藏域中 * 第一个方法赋不了值,经过下面的赋值 //处理卡片页面列表展现问题 ,error: function(index, upload){ //执行上传请求出现异常的回调(通常为网络异常、URL 404等)。返回两个参数,分别为:index(当前文件的索引)、upload(从新上传的方法) alert("请先保存基础信息以后才能上传图片"); //处理卡片页面列表展现问题 /*保存以前,要先把数据库中FILEATTACHMENT查出来,而后一并保存*/ alert("服务器正忙,请稍后重试"); alert("服务器正忙,请稍后重试"); /*保存以后,要把主键的值拿回来*/ alert("服务器正忙,请稍后重试");

layui上传附件控制上传附件大小 //执行上传请求后的回调。返回三个参数,分别为:res(服务端响应信息)、index(当前文件的索引)、upload(从新上传的方法,通常在文件上传失败后使用) //改变预览状态,将上传附件id存在 隐藏域中 * 第一个方法赋不了值,经过下面的赋值 //处理卡片页面列表展现问题 ,error: function(index, upload){ //执行上传请求出现异常的回调(通常为网络异常、URL 404等)。返回两个参数,分别为:index(当前文件的索引)、upload(从新上传的方法) //若是有附件,上传附件

//关闭卡片页面以前回调
 //若是涉及到文件上传,关闭卡片页面将未上传的附件进行删除
 
10、layui点击列表行操做 //界面须要引用的插件 //TODO 父类仅仅绑定了工具条通用按钮事件, 若有其余事件请在这里定义

12、layui页面列表加载回调事件 //复选框事件选中之后回调 //TODO 父类仅仅绑定了工具条通用按钮事件, 若有其余事件请在这里定义


十3、layOption的列表加载动态指定查询条件 * 显示不一样设备列表 //界面须要引用的插件 //plugins 这个能够不传,可是请不要传空数组过来


//plugins 这个能够不传,可是请不要传空数组过来 //复选框事件选中之后回调 //界面绘制完成, 初始化界面事件
//initializing是为了解决咱们以前说的继承致使原型有多余参数的问题。当咱们直接将父类的实例赋值给子类原型时。是会调用一次父类的构造函数的。因此这边会把真正的构造流程放到init函数里面,经过initializing来表示当前是否是处于构造原型阶段,为true的话就不会调用init。 //fnTest用来匹配代码里面有没有使用super关键字。对于一些浏览器`function(){xyz;}`会生成个字符串,而且会把里面的代码弄出来,有的浏览器就不会。`/xyz/.test(function(){xyz;})`为true表明浏览器支持看到函数的内部代码,因此用`/\b_super\b/`来匹配。若是不行,就无论三七二十一。全部的函数都算有super关键字,因而就是个一定匹配的正则。 // 生成一个类,这个类会具备extend方法用于继续继承下去 //保留当前类,通常是父类的原型 //this指向父类。初次时指向Class超级父类 //开关 用来使原型赋值时不调用真正的构成流程 //这边其实就是很简单的将prop的属性混入到子类的原型上。若是是函数咱们就要作一些特殊处理 //经过闭包,返回一个新的操做函数.在外面包一层,这样咱们能够作些额外的处理 // 调用一个函数时,会给this注入一个_super方法用来调用父类的同名方法 //由于上面的赋值,是的这边的fn里面能够经过_super调用到父类同名方法 //离开时 保存现场环境,恢复值。 // 这边是返回的类,其实就是咱们返回的子类 // 赋值原型链,完成继承 //界面须要引用的插件 //TODO 父类仅仅绑定了工具条通用按钮事件, 若有其余事件请在这里定义
























































js模拟了java,闭包内部定义了一个'构造函数',经过实例化new this();来动态获取当前对象
}

我要回帖

更多关于 js本地存储并获取数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信