关于JS框架的一点想法
读了几页《vue.js设计与实现》,记录几点想法:
1.Html是根本
2.无论哪个框架,不管是运行时框架,还是编译时框架,最终都要通过标签“绘制”页面
3.这个“绘制的过程”就是渲染,渲染由浏览器完成。
4.静态网站的渲染是最快的,没有所谓的“编译”环节消耗。
5.为啥搞这么多新技术出来呢?一是直接写每个页面太繁琐,系统稍大一点几乎就不可能完成任务。二是浏览器能力越来越强,有了硬件上的基础。
6.上面说了,不管是那种框架,最终目标都是转为html代码。一般来说,源码有如下两种:
(1)字符串;(2)json格式。(3)可能还有其它格式
比如,这段代码:
<div><span>世界你好!</span></div>
A:最基本的逻辑:放在标准的html文档里,自动就执行(“绘制”或者说渲染)。
B:字符串转换:
let txt = '世界你好!';
let html = "<div><span>"+txt+"</span></html>";
document.body.appendChild(html);
经过字符串拼接和appendChild两个步骤,才到了A的阶段——浏览器可直接绘制的阶段。
C:JSON转换
const obj = {
tag: 'div',
children: [
{tag:'span',children:'世界你好!'}
]
}
这种json数据又如何转为可被浏览器直接识别并绘制的html代码呢?
只能用JavaScript来辅助实现了。
function Render(obj,root){
const el = document.createElement(obj.tag);
if(typeof obj.children === 'string'){
const text = document.createTextNode(obj.children);
el.appendChild(text);
}else if(obj.children){
obj.children.forEach((child)=>Render(child,el));
}
root.appendChild(el);
}
通过调用
Render(obj,document.body)
才能到达A的阶段——浏览器可直接绘制的阶段。
7.如果页面很少,那么用A的方法最简单效率最高。
8.如果稍微负责一点的,用B的方法也不错,不费脑子好理解,符合直觉(过程性框架的优势)
9.页面比较多,而且页面元素复杂,那么,还是用C比较好,只要按照规则写好代码,转换(编译)的事情由框架代劳,不用去费那个脑子。
10.正常情况下,后两种效率差不多。但是,当涉及到局部绘制(局部渲染)的时候,效率就差多了。
关于JS框架的一点想法的更多相关文章
- 关于Java的一些NIO框架的一点想法
闲着有点无聊想写点东西. 问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我 ...
- (转)2018几大主流的UI/JS框架——前端框架 [Vue.js(目前市场上的主流)]
https://blog.csdn.net/hu_belif/article/details/81258961 2016年开始应该是互联网飞速发展的几年,同时也是Web前端开发非常火爆的一年,Web ...
- 不要再使用JS框架了
停止编写Javascript框架吧. Javascript框架就好像死亡和税收一样:终究不可避免它的存在.我确信如果我是那面墙上的一只苍蝇,每次有人开始一个新的网页项目时,第一个问题肯定是我们用的是哪 ...
- JS框架
s框架就是将常用的方法进行封装,方便调取使用.一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方 ...
- 前端Js框架汇总
概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...
- js框架简明
jquery 主要战场还是在dom这块.其它经典怀旧的2个需要了解一下,mootools, prototype.是他们启发了js向工程化,团队化,协作化发展的转变,yui虽然听说停止开发了,但他的代码 ...
- 8款JS框架比较
Dojo Dojo 是目前最为强大的JS框架,它在自己的 Wiki 上给自己下了一个定义,Dojo 是一个用 JavaScript 编写的开源的DHTML工具箱.Dojo 很想做一个“大一统” ...
- js 框架都有哪几种(转载)
目前来看,js框架以及一些开发包和库类有如下几个,Dojo .Scriptaculous .Prototype .yui-ext .Jquery .Mochikit.mootools .moo.fxD ...
- 不可错过的Node.js框架
前言 Node.js是由Ryan Dahl于2009年创建的.它是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它是基于Google Chrome V8 JavaScript引擎构建的. ...
- 前端Js框架 UI框架汇总 特性 适用范围 选择
身为一个资深后端工程师,面对层出不穷的前端框架,总让人眼花缭乱,做一个综合解析贴,从全局着眼,让我们明白各种前端框架的应用范围,为如何选择前端框架,从不同的维度提供一些线索,做为一个长期优化贴,欢迎指 ...
随机推荐
- KTL 用C++14写公式的K线工具 - 0.9.3版
K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...
- 【XML】学习笔记第二章-dtd
目录 XML-DTD DTD语句 基本声明语句 引用外部DTD DTD元素 四种元素类型 元素定义关键字 修饰符号 DTD中的属性 属性修饰 属性类型 DTD中的实体和符号 符号 坑 XML-DTD ...
- 【javaweb】【Session】记录用户访问时间
效果 Servlet import jakarta.servlet.*; import jakarta.servlet.http.*; import jakarta.servlet.annotatio ...
- 【MyBatis】学习笔记03:配置文件进一步解读(非常重要)
[Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 目录 核心配置文件 properties 将properties文件引入到核心文件 typeAli ...
- 【软件工程与UML】第1章 笔记和练习题
基本概念 软件 = 程序 + 数据 + 文档 软件的特点 抽象性:软件是一种逻辑实体 可复制性:软件是通过人们智力活动,把知识和技术转化为信息的一种产品. 不会磨损: 依赖性:软件的开发和运行经常收到 ...
- 创建LVM报错:Can't initialize physical volume "/dev/sdb1" of volume group "myvg" without -ff
问题: 在使用fdisk /dev/sdb 删除原有LVM分区,在接着创建LVM新分区/dev/sdb1.完毕保存之后. 执行pvcreate /dev/sdb1出现报错 Can't initiali ...
- File was changed on disk
刚开始从eclipse转到idea,发现idea从svn同步代码后,点开一个java类报错 说是某个方法不存在,以为是别人代码没有提全,就点到别人代码里面去看,顶行出现"File was c ...
- 【杂谈】Kafka 消息偏移量:如何高效地定位和管理消息?
前言 在 Kafka 中,消息偏移量是什么?是文件中的索引吗?又是如何通过偏移量快速定位消息的?本文将深入探讨这些问题,帮助你更好地理解 Kafka 的偏移量机制. Kafka 的偏移量是什么? Ka ...
- Qt开发经验小技巧231-235
关于c++中继承多态virtual和override的几点总结. 子类可以直接使用基类中的protected下的变量和函数. 基类函数没加virtual,子类有相同函数,实现的是覆盖.用基类指针调用时 ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v8.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持 UDP .TCP .WebSocket 三种协议,支持 iOS ...