当前位置:首页 » 网页前端 » 前端渲染框架
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端渲染框架

发布时间: 2023-01-30 10:41:16

A. 前端常用的框架有哪些

web前端的主流框架,下面,我给大家具体介绍一下:

1.Angular:Angular是一个优秀的前端JS框架。Angular有很多特性,核心是MVW(Model-View-Whatever)、模块化、自动双向数据绑定、语义标注、依赖注入等。Angular是一个比较完整的前端框架,包含了服务、模板、双向数据绑定、模块化、路由、过滤器、依赖注入等所有功能。自定义指令后可以在项目中多次使用。

2.React:React可以非常容易地创建用户界面。为应用程序的每个状态设计简洁的视图,React还可以在数据发生变化时高效地更新渲染界面。React为你的程序编写独立的模块化UI组件,这样当一个或一些组件出现问题时,可以很容易地隔离出来。

3.Vue:最近几年最火的前端框架是Vue.js,这是一个构建数据驱动Web界面的渐进式框架。Vue.js的目标是通过尽可能简单的API实现响应和组合视图组件的数据绑定。Vue是模块友好的,可以通过NPM、鲍尔或Duo安装。它不会强制你所有的代码都遵循Angular的各种规定,使用场景更加灵活。

以上三个是我给大家介绍的web前端主流框架。希望我的回答对你有帮助。

B. 后台只提供json数据,页面全靠前端渲染,交互,需要用到哪些框架,有

dojo可以做到,并且特别好用。希望采纳。放一个例子给你看看。
使用很简单:
<!-- 显示待办视图 -->
<xsl:variable name="todoRequestUrl">http://xxxx.xxxx.xxxx.xxxx/public/tcwmain.nsf/AG_GetUndo_Mobile?OpenAgent&UserName=<xsl:value-of select="$DaiBanUserName"/>&temp</xsl:variable>
<div
data-dojo-type="moa/TodoScrollableView"
id="todoPage"
data-dojo-props="
requestData:'{$todoRequestUrl}',
labelName:'待办文件',
heading:'todoHeading',
refresh:'todoRefresh',
fixedHeader:'todoHeading'
"
>
<!--
<div data-dojo-type="dojox/mobile/Heading" data-dojo-props="label:'待办工作',fixed:'top'" id="todoHeading">
<span data-dojo-type="dojox/mobile/ToolBarButton" style="float:left" data-dojo-props="moveTo:'homePage'">首 页</span>
<span data-dojo-type="dojox/mobile/ToolBarButton" style="float:right" id="todoRefresh">刷 新</span>
</div>
-->
<div data-dojo-type="dojox/mobile/Heading" data-dojo-props="label:'待办文件',fixed:'top'" id="todoHeading">
<span
data-dojo-type="dojox/mobile/ToolBarButton"
style="float:left"
data-dojo-props="moveTo:'documentSystemPage',clickable:true,onClick:onHomeReturnClick"
>返 回</span>
<span data-dojo-type="dojox/mobile/ToolBarButton" style="float:right" id="todoRefresh">刷 新</span>
</div>
<xsl:call-template name="homeMainNavy"/>
</div>
/*
*可以自动加载数据列表的视图
*数据结构与待办相同的模块使用这个视图,异步加载数据
*这事类对象,需要new关键字或直接用标签调用
*/
define([
"dojo/_base/declare",
"dojo/request",
"dojo/store/Memory",
"dojo/_base/array",
"dojox/mobile/EdgeToEdgeStoreList",
"dojox/mobile/ScrollableView",
"dojox/mobile/ContentPane",
"./html5-session-store",
"dojo/dom",
"dojo/dom-attr",
"dojo/on",
"dojo/touch",
"./mdp-common",
"./dojo-ready-task",
"./rootUrl",
"dojo/string",
"./mdpServlet",
"dojo/date",
"dojo/date/stamp",
"dojo/topic",
"./dialog"

],function(
declare,
request,
Memory,
arrayUtil,
EdgeToEdgeStoreList,
ScrollableView,
ContentPane,
session,
dom,
domAttr,
on,
touch,
mdpCommon,
task,
rootUrl,
strUtil,
mdpServlet,
dojoDate,
dojoStamp,
topic,
dialog

){
var DataScrollView = declare([ScrollableView],{
count:0,
maxCount:100,
requestUrl:mdpServlet,
requestData:null,
labelName:"",
heading:"",
refresh:"",
progress:null,
list:null,
sessionName:function(){
var session = "globle."+this.get("id");
return session;
},

postCreate:function() {
this.inherited(arguments);
//给自定义view加载数据
this._loadData();

var self = this;
var refresh = dom.byId(this.refresh);
this.own(
on(refresh,touch.release,function(evt){
session.remove(self.sessionName());
self._loadData();
evt.preventDefault();
evt.stopPropagation();
})
);
},

//更新首页待办导航列表视图数值
_publishInform:function(count)
{
topic.publish("moa/home/listcreated",{id:this.id,sessionName:this.sessionName()});
},

_loadData:function() {
//使用缓存
if(session.support()) {
var response = session.getJson(this.sessionName());
if(!!response) {
this._createList(response);
this._publishInform();
return;
}
}

//使用ajax加载
if(!this.requestUrl) {
return;
}

var self = this;
//发ajax请求,火狐会存在问题,初步估计问题是重定向造成的
request(this.requestUrl,{
method:"POST",
data:{url:this.requestData},
handleAs:"json"
}).then(function(response){
self._sort(response);
//使用session保存数据
if(session.support()) {
session.saveJson(self.sessionName(),response);
}
self._createList(response);
self._publishInform();
},function(ex){
});
},

_setHeading:function() {
var heading = dom.byId(this.heading);
if(!heading) {
return;
}
var label = this.labelName;
var style = "position:relative;top:-3px;margin-left:10px;color:red;border-radius:30px;border:1px solid #f9f9f9;padding:3px 6px;font-size:13px;";
var count = Math.min(this.count,this.maxCount);
label = label +"<span style='"+style+"'>共"+ count +"条</span>";
task.setHeadingLabel(label,this.heading);
},

//给列表排序
_sort:function(data)
{
if(!data || !data.data || data.data.length < 2) {
return;
}
//排序函数
var compare = function(a,b)
{
if(!a.rightText || !b.rightText)
{
return 0;
}

return dojoDate.difference(dojoStamp.fromISOString(a.rightText),dojoStamp.fromISOString(b.rightText),"day")
}

data.data.sort(compare);
},

_createList:function(data){
if(!!this.list){
this.list.destroy();
}
this.count = !data || !data.data?0:data.data.length;
if(this.count === 0 || !!data.data && data.data.length === 0) {
var pane = new ContentPane({content:"暂无数据",style:"width:100%;padding:15px 0;text-align:center;line-height:200%;color:red;font-weight:bold;"});
this.list = pane;
task.addViewChild(this,pane);
return;
}
var model = !data.data?{data:[],idProperty:this.label}:{data:data.data,idProperty:this.label};
var store = new Memory(model);
var self = this;

this._setHeading();

var list = new EdgeToEdgeStoreList({
store:store,
postCreate:function() {
var children = this.getChildren();
arrayUtil.forEach(children,function(item){
item.clickable=true;
item.onClick=function(evt){

evt.preventDefault();
evt.stopPropagation();
//loadadd 1028
//this.set("busy",true);
//self._requestTodo(this.moaUrl)
//console.log("loading1......");
/*
dialog.progressIndecator();

var OADocUrl = this.moaUrl;
//必须0.2s后
var timeout = window.setTimeout(function(){window.clearTimeout(timeout);self._showContent(OADocUrl);},1000);
*/
self._showContent(this.moaUrl);

//self._updateTodoList(this.moaUrl);
};
})
}
});
task.addViewChild(this,list);
this.list=list;
},

_showContent:function(url) {
//记录一个临时cookie,这是返回主页的时候用的,需要定位到主页特定视图
var newUrl = strUtil.trim(url)+"&todo";

if(this.id === "inReadingPage") {
this._updateTodoList(newUrl);
}
session.saveString("homeShowId",this.id);
//调用众望的接口直接打开html页面
var ObjForm = mdpCommon.GetForm("frm");
mdpCommon.InputField("frm","url",newUrl);
mdpCommon.AccessURL(ObjForm);
ObjForm.submit();
},

//更新待办列表
_updateTodoList:function(url) {
var regExp = /([0-9A-Za-z]{32})/gi;
var result = url.match(regExp);
var unid;
if(!!result) {
unid=result[0];
}
if(!unid) {
return;
}

var todoList = session.getJson("globle."+this.id);
var count = todoList.count;
var todoList = todoList.data;

for(var i=0,len=todoList.length;i<len;i++){
var moaUrl = todoList[i].moaUrl.toUpperCase();

if(moaUrl.indexOf(unid) > -1) {
todoList.splice(i,1);
count--;
break;
}
}

session.saveJson("globle."+this.id,{count:count,data:todoList});
},

_cacheDocUrl:function(todoUrl,docUrl) {
if(!session.support()) {
return;
}
var todoUnid = this._getTodoUnidFromUrl(todoUrl);
session.saveString(this.sessionName()+"."+todoUnid,docUrl);
},

_getDocUrl:function(todoUrl){
if(!session.support()) {
return;
}
var todoUnid = this._getTodoUnidFromUrl(todoUrl);
return session.getString(this.sessionName()+"."+todoUnid);
},

_getTodoUnidFromUrl:function(todoUrl){
//从todo url中解析todo unid
var reg = /([A-Fa-f0-9]{32})/;
var res = reg.exec(todoUrl);
if(!!res){
return res[0].toUpperCase();
}
},

_requestTodo:function(url) {
var docUrl = this._getDocUrl(url);
if(!!docUrl){
this._showContent(docUrl);
return;
}
var self = this;
request(this.requestUrl,{
method:"POST",
data:{url:url},
handleAs:"json"
}).then(function(response){
docUrl = rootUrl+"/"+response.dbname+"/0/"+response.unid+"?editdocument";
self._cacheDocUrl(url,docUrl);
self._showContent(docUrl);
},function(ex){
});
}
});
return DataScrollView;
});

C. 前端常用的框架有哪些

给你介绍Web前端三大主流框架
React:
1.声明式设计:React采用声明范式,可以轻松描述应用。
2.高效:React通过对DOM的模拟,最大限度地减少与DOM的交互。
3.灵活:React可以与已知的库或框架很好地配合。
优点:
1.速度快:在UI渲染过程中,React通过在虚拟DOM中的微操作来实现对实际DOM的局部更新。
2.跨浏览器兼容:虚拟DOM帮助我们解决了跨浏览器问题,它为我们提供了标准化的API,甚至在IE8中都是没问题的。
3.模块化:为你程序编写独立的模块化UI组件,这样当某个或某些组件出现问题是,可以方便地进行隔离。
4.单向数据流:Flux是一个用于在JavaScript应用中创建单向数据层的架构5.同构、纯粹的javascript:因为搜索引擎的爬虫程序依赖的是服务端响应而不是JavaScript的执行,预渲染你的应用有助于搜索引擎优化。6.兼容性好:比如使用RequireJS来加载和打包,而Browserify和Webpack适用于构建大型应用。它们使得那些艰难的任务不再让人望而生畏。缺点:React本身只是一个V而已,并不是一个完整的框架,所以如果是大型项目想要一套完整的框架的话,基本都需要加上ReactRouter和Flux才能写大型应用。

Vue:
Vue是尤雨溪编写的一个构建数据驱动的Web界面的库,准确来说不是一个框架,它聚焦在V(view)视图层。
它有以下的特性:
1.轻量级的框架
2.双向数据绑定
3.指令
4.插件化
优点:
1.简单:官方文档很清晰,比Angular简单易学。
2.快速:异步批处理方式更新DOM。
3.组合:用解耦的、可复用的组件组合你的应用程序。
4.紧凑:~18kbmin+gzip,且无依赖。
5.强大:表达式无需声明依赖的可推导属性(computedproperties)。
6.对模块友好:可以通过NPM、Bower或Duo安装,不强迫你所有的代码都遵循Angular的各种规定,使用场景更加灵活。
缺点:
1.新生儿:Vue.js是一个新的项目,没有angular那么成熟。
2.影响度不是很大:google了一下,有关于Vue.js多样性或者说丰富性少于其他一些有名的库。
3.不支持IE8。

Angular:
Angular是一款优秀的前端JS框架,已经被用于Google的多款产品当中。
它有以下的特性:
1.良好的应用程序结构
2.双向数据绑定
3.指令
4.HTML模板
5.可嵌入、注入和测试
优点:
1.模板功能强大丰富,自带了极其丰富的angular指令。
2.是一个比较完善的前端框架,包含服务,模板,数据双向绑定,模块化,路由,过滤器,依赖注入等所有功能;3.自定义指令,自定义指令后可以在项目中多次使用。
4.ng模块化比较大胆的引入了Java的一些东西(依赖注入),能够很容易的写出可复用的代码,对于敏捷开发的团队来说非常有帮助。
5.angularjs是互联网巨人谷歌开发,这也意味着他有一个坚实的基础和社区支持。
缺点:
1.angular入门很容易但深入后概念很多,学习中较难理解。
2.文档例子非常少,官方的文档基本只写了api,一个例子都没有,很多时候具体怎么用都是google来的,或直接问misko,angular的作者。
3.对IE6/7兼容不算特别好,就是可以用jQuery自己手写代码解决一些。
4.指令的应用的最佳实践教程少,angular其实很灵活,如果不看一些作者的使用原则,很容易写出四不像的代码,例如js中还是像jQuery的思想有很多dom操作。
5.DI依赖注入如果代码压缩需要显示声明。

D. 前端常用的框架有哪些

在Web前端开发中,适时地使用一些框架,对于我们日常的开发,可以说是事半功倍。那么,常用的Web前端框架有哪些呢?程序员常用的Web前端开发框架如下:
1、Bootstrap
Bootstrap流行的CSS框架,它是最早的Web前端框架,Bootstrap提供了许多实例来帮助入门。使用Bootstrap可以将不同的组件和布局组合在一起,从而创建有趣的页面设计,还提供了大量详细的文档。
2、QUICK UI
QUICK UI一套完整的企业级web前端开发解决方案,由基础框架、UI组件库、皮肤包、示例工程和文档等组成。使用QUICKUI开发者可以极大地减少工作量提高开发效率,快速构建功能强大、美观、兼容的web应用系统。
3、MDC Web
Material Components for the web(MDC Web),谷歌为Web设计的全新前端框架。MDC Web帮助开发人员执行Material Design,组件由谷歌的核心工程师团队和UX设计人员开发。这些组件可以建立可靠的开发工作流程以构建美观且功能强大的Web项目。
4、Pure
Bootstrap,Patternfly和MDC Web功能非常强大的CSS框架,但非常繁琐复杂。如想要一个轻量级的CSS框架建议尝试Pure.css,本身更接近于CSS编程,但又可以帮助构建一个不错的网页。Pure是具有最小占用空间的轻量级CSS框架由Yahoo开发根据BSD许可是开源。
5、Foundation
Foundation声称是世界上最先进的响应式前端框架。它提供了用于构建专业网站的高级功能和教程。许多公司,组织都使用该框架,并且该框架具有大量可用的文档。
6、Bulma
Bulma基于Flexbox的开源框架可根据MIT许可证开源。一个非常轻量级的框架,只需要一个CSS文件。Bulma拥有简洁明了的文档可轻松选择想要的主题。还具有许多Web组件可以在设计中使用它们。
7、Skeleton
轻量级框架Skeleton。Skeleton库只有大约400行,且该框架仅提供一些基本的CSS框架组件。Skeleton还是提供了详细的文档来帮助快速上手。
8、Materialize
Materialize 是一个基于 Material Design风格的一个现代化的响应式前端框架,解决了最繁重的工作,结合的自定义组件为提供默认的样式。Materialize的文档页面非常全面很容易遵循。其组件页面包括按钮,卡片,导航等。
9、Bootflat
Bootflat是从Twitter的Bootstrap派生的开源CSS框架。与Bootstrap相比Bootflat更简单更加轻量级。大部分都是图像没有太多的文字。
10、PatternFly
PatternFly是Red Hat的开源CSS框架,和Bootstrap不同的是Bootstrap是为那些想要创建漂亮网站的人而设计,而PatternFly主要专注于企业应用程序开发人员提供诸如条形图、图表、导航之类的组件,实际上Red Hat就是使用它创建了OpenShift。除了静态HTML,PatternFly还支持ReactJS框架,这是Facebook开发的流行JavaScript框架。PatternFly具有许多适用于企业级应用程序的高级组件,如条形图,图表,模式和布局。
11、flex
Flex目前还在孵化阶段,还不是Apache的正式项目,Flex4.8也不是一个正式的Apache版本。,该版本标志着Flex新时代的开始,Flex的未来将由社区来驱动而不是由一个公司驱动。开发者可以通过贡献代码来帮助改进Flex,如修复bug、增加功能等。
以上就是分享的Web前端开发常用的一些框架。程序员们可以根据自己的业务需求选择简洁直观、功能强大的前端开发框架,让自己的工作更迅速简单,提高开发的效率。

E. 北大青鸟设计培训:web前端多端编程开发框架结构

随着我们对web前端编程开发技术的掌握,越来越多的框架语言和架构方式被我们所熟知。
下面四川北大青鸟http://www.kmbdqn.cn/就一起来了解一下,web前端开发的一些常见框架结构。
1.全包型这类框架大的特点就是从底层的渲染引擎、布局引擎,到中层的DSL,再到上层的框架全部由自己开发,代表框架是Qt和Flutter。
这类框架优点非常明显:性能(的上限)高;各平台渲染结果一致。
缺点也非常明显:需要完全重新学习DSL(QML/Dart),以及难以适配中国特色的端:小程序。
这类框架是原始也是纯正的的多端开发框架,由于底层到上层每个环节都掌握在自己手里,也能大可能地去保证开发和跨端体验一致。
但它们的框架研发成本巨大,渲染引擎、布局引擎、DSL、上层框架每个部分都需要大量人力开发维护。
2.Web技术型这类框架把Web技术(JavaScript,CSS)带到移动开发中,自研布局引擎处理CSS,使用JavaScript写业务逻辑,使用流行的前端框架作为DSL,各端分别使用各自的原生组件渲染。
代表框架是ReactNative和Weex,这样做的优点有:开发迅速;复用前端生态;易于学习上手,不管前端后端移动端,多多少少都会一点JS、CSS。
缺点有:1.交互复杂时难以写出高性能的代码,这类框架的设计就必然导致JS和Native之间需要通信,类似于手势操作这样频繁地触发通信就很可能使得UI无法在16ms内及时绘制。
ReactNative有一些声明式的组件可以避免这个问题,但声明式的写法很难满足复杂交互的需求。
2.由于没有渲染引擎,使用各端的原生组件渲染,相同代码渲染的一致性没有一种高。
3.JavaScript编译型这类框架就是我们这篇文章的主角们:Taro、WePY、uni-app、mpvue、chameleon,它们的原理也都大同小异:先以JavaScript作为基础选定一个DSL框架,以这个DSL框架为标准在各端分别编译为不同的代码,各端分别有一个运行时框架或兼容组件库保证代码正确运行。

F. 为什么现代前端框架放弃了HTML的常规用法

因为再不搞得貌似高大上,各种智能AI会让前端全部失业啊,所以把问题复杂化,可以延长技术岗位淘汰的时间

随着互联网和相关技术的发展,确实现在的前端框架越来越强大了,但是并不是说现在的前端框架就放弃了HTML的常规用法,所有的前端应用依旧是建立原有的HTML,CSS,JS的基础上的,依旧是遵照W3C标准去执行的。

毕竟最终呈现这一切的是浏览器,如果我们的标准和用法发生变化,首先就会从浏览器发生改变,但其实我们现在的浏览器并没有变,我们再新的网站,用谷歌很旧版本的浏览器依旧可以访问,当然兼容性上可能会存在一些些问题。

不过,HTML和JavaScript确实是在发展,HTML里面加上了很多新的属性,2008年的时候,HTML 5正式发布,不过当时的浏览器其实并不能很好的支持HTML 5,直到2012年,HTML 5的位置才算是稳定下来。JavaScript也是同样,它的版本一直都在迭代,从1997年诞生的ECMAScript(ES) 1.0 版本,到现在已经ES10了,但是浏览器对于ES的兼容还停留在ES6的水平上,只是我们想了更多的方案在前端的框架上。

简单来说,原有的渲染方式是先加载HTML,然后加载CSS进行渲染,然后加载JS进行渲染,这样的方式开销小,但是速度慢。而现在的渲染方式是先进行Virtual DOM(VDOM)的渲染,然后一次性将VDOM映射到DOM上,这样来加快渲染速度,但是缺点就是开销会变大。

不过我们计算机的性能现在已经很强大了,这么一点点的开销其实影响并不大,因此也就让现在的前端框架越来越喜欢新的这种渲染模式。


例如:我们原有的 标签,使用的时候就会使用传统的渲染方式,开销很小,但是确实外观上有时候不太符合现在人的审美,即使通过CSS各种美化,但是也有点不尽如人意。因此,我们现在的框架中,大多使用的方式,配合JS设计了新下拉控件,虽然开销大了一些,但是加载速度快,好看且功能强大。也由于这些各种自定义控件的出现,让原有的Form POST方式变得有点不太够用了,所以,基于Ajax的各种交互方式也就出现了。当然,这并不是说就放弃了传统的HTML,我们依旧使用的是传统的HTML,只是在它之上做了加工,让他能够更好,更符合现在人的使用习惯和审美。而类似Vue,React,Angular这样的前端框架,也是为开发者提供了更多的便利,让开发者可以更专注于交互和功能,在一些简单的技术层面处理就交给了框架。现在前端库,框架(Vue,React,Angular)也并没有放弃HTML常规用法,还是遵守W3C标准去执行的。但是执行这个过程是由程序自动化了也就是VDOM=>DOM的过程。传统前端三大根基HTML,CSS,JS,CSS还有一席之地,JS被无限放大的使用,而标准的带有语义化的HTML也并没有被抛弃。React库就是基于Javascript将HTML CSS都写在一起的风格。关于标签,各个PC端浏览器对input 类型为radio,checkbox默认的展示样式不一样。也需要我们自己模拟一下,达到用户需求。当然还有其他人分享的类型为number的时候等等,不得不说原生计算虽然很强大,能做到库,框架做不到的需求,也孕育了各个库,框架。但原生js操作DOM是很痛苦的。所以这些零零散散的问题阻碍了现代化开发效率。能解决这些问题从一定程度上大家肯定是拥护的。HTML还是会用下去的,除了语言本身我们也需要考虑各个浏览器的兼容与发展,对语言本身的支持度。现在都是现在virtual dom中渲染完css和JS,渲染完,再从virtual dom一次映射到dom,这么做主要是为了加快渲染速度,缺点是耗费内存特别大。。常规的HTML渲染是先加载HTML,然后再渲染css,渲染css过程中会有很多HTML特性变化,之后再渲染JS,就触发很多的HTML和css变化。这种模式,最大缺点是分三步走,大概是串行运行,花费时间较长,,另外很多元素渲染三遍才变成最终状态(大概这么理解)。。。提问者是发现前端语言中出现了自定义标签或者模板语法吗?还是说vue类似的语法结构?前者说到底就一个原因:浏览器的兼容性!特别是IE这个不知进取的货,前端技术被这货一直限制,直到win10的出现才得到改善,就连现在最低兼容也要考虑到ie9!常规前端框架要负责渲染和ui效果,html标签无法满足现在ui层的渲染要求,不同浏览器下的展示结果也不同,最直观的就是表单元素:select、radio、checkbox、button等等。所以你会看见所有前端框架都必须要有一套自己的表单组件。作为一款框架,目的就是用最简单的语法达到最好的展示结果,语法特别重要,所以我们会发现在框架中利用js做二次渲染是最好的选择,使用者只需一个属性就能达到特定效果。比如我自研的框架中开关组件: ,只需对应属性给值,其他的交给框架去渲染。

有的干脆直接给js函数传入对象参数:

xxx({

type : swith,

text : 开|关

})

而vue这种就属于渲染引擎,只负责渲染,不负责ui效果,没什么好说的。

任何前端框架都是基于html css js这三者基础上扩展丰富,以方便更多人去快捷高效的使用!

我前后端都搞,那会还要考虑ie6的兼容问题,那时候唯一的前端库是jq,用起来很方便,开发思想围绕面向过程。近些年出的react、vue、angular框架则更多是面向对象思想,前端也越来越工程化,但本质还是在js基础上的扩展丰富。

回到题主问题,最开始的是直接js操作dom,这样是很消耗性能的,后面出的那些框架中所提出的虚拟dom操作,本质就是用一个全局js对象维护所有的dom节点,当最终比对出dom需要更新时,再操作dom。所以就理想化而言,后者性能上更好且代码优雅。

那是因为你看到的都是互联网行业。传统业务系统,电力,金融,银行,制造业等等都在用,逻辑复杂,架构复杂,不是你互联网搞几个页面查询显示,追求所谓的加载速度和体验 那么简单。在互联网行业,你几乎接触不到真正的面向对象设计的架构,只有一堆中间件,各种前后端框架。这是完全不同的两个领域,不能混为一谈。

狭隘范畴来说,任何前端框架最终都是靠html css js 三大件来实现的

没有感觉现在前端放弃了常规写法。

你所谓的常规用法是html旧版本。新版html 添加了太多东西 都es7es8了 是用法升级了

G. 求一款web前端框架,开发react,要同时支持spa单页和ssr服务器渲染,支持typescript,最好带有完整的Demo

react-coat

react-coat 特点

  • 集成 react、rex、react-router、history 等相关框架

  • 仅为以上框架的糖衣外套,不改变其基本概念,无强侵入与破坏性

  • 结构化前端工程、业务模块化,支持按需加载

  • 同时支持 SPA(单页应用)和 SSR(服务器渲染)

  • 使用 typescript 严格类型,更好的静态检查与智能提示

  • 开源微框架,源码不到千行,几乎不用学习即可上手

这款可以满足你,带完整Demo示例

H. 使用nodejs进行后端渲染,前端还需要框架级的工具吗

题主自己也说了是“使用Nodejs进行后端渲染”。
目前有两种方式,一种是后端渲染,即:服务器生成页面返回给前台。
另一种就是前端自行渲染,比如AngularJs这样的框架。
至于选择哪种,还是要看是否是重体验交互,还是只是简简单单的展示内容。
所以题主你关心是否需要前端框架,主要在于你的应用场景是怎样的?
Node做为后端其实是和PHP,Java这些做的事情差不多,还是在做后端的事。

I. 使用nodejs进行后端渲染,前端还需要框架级的工具吗

nodejs做后端,它的功能就类似PHP等服务端语言。虽然语法是js,但不会在浏览器执行,所谓渲染,只是产生可被浏览器读取的HTML、css、js内容。这里js是要在浏览器端执行的,不是nodejs执行的,所以如果你需要实现复杂功能,也可以用一些前端框架,比如jquery。

J. 微前端前言

微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。

主框架不限制接入应用的技术栈,微应用具备完全自主权

微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新

在面对各种复杂场景时,我们通常很难对一个已经存在的系统做全量的技术栈升级或重构,而微前端是一种非常好的实施渐进式重构的手段和策略

每个微应用之间状态隔离,运行时状态不共享

微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用后,随之而来的应用不可维护的问题。这类问题在企业级 Web 应用中尤其常见。

1.url 不同步。浏览器刷新 iframe url 状态丢失、后退前进按钮无法使用。
2.UI 不同步,DOM 结构不共享。想象一下屏幕右下角 1/4 的 iframe 里来一个带遮罩层的弹框,同时我们要求这个弹框要浏览器居中显示,还要浏览器 resize 时自动居中。
3.全局上下文完全隔离,内存变量不共享。iframe 内外系统的通信、数据同步等需求,主应用的 cookie 要透传到根域名都不同的子应用中实现免登效果。
4.慢。每次子应用进入都是一次浏览器上下文重建、资源重新加载的过程。

通过监听 url change 事件,在路由变化时匹配到渲染的子应用并进行渲染,这个思路也是目前实现微前端的主流方式。同时single-spa要求子应用修改渲染逻辑并暴露出三个方法:bootstrap、mount、unmount,分别对应初始化、渲染和卸载,这也导致子应用需要对入口文件进行修改。过于基础,成本太高,不建议。

qiankun是阿里推出的一个基于single-spa的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。因为是基于single-spa进行封装,所以single-spa的特点也被qiankun继承下来。成本低于single-spa,高于MicroApp。

MicroApp是京东推出的一款基于类WebComponent进行渲染的微前端框架,不同于目前流行的开源框架,它从组件化的思维实现微前端,旨在降低上手难度、提升工作效率。它是目前市面上接入微前端成本最低的框架,并且提供了JS沙箱、样式隔离、元素隔离、预加载、资源地址补全、插件系统、数据通信等一系列完善的功能。是目前市面上接入微前端成本最低的方案。

single-spa github地址: https://github.com/single-spa/single-spa
qiankun官网: https://qiankun.umijs.org/zh
MicroApp官网: https://cang.org/micro-app/