JavaScript会是Web开发的未来吗?

aps排程提升全流程质量追溯管理 说起铆钉,相信大家都不会陌生,金属变形体可能就是我们知道的铆钉的祖先。毫无疑问,它们是人类已知金属连接的最古老的方法,可以追溯到最初使用可锻金属那么远。从青铜器时代,古人就用铆钉把开槽型车轮外线的六个木制扇形体铆接紧固在一起。铆钉的应用非常广泛,从航天航空到办公机器、电子产品以及运动场设备等,可以说,铆钉现已成为有效而稳固的机械连接方法。 阅读详情

世界真奇妙,转了一圈又回到了原点。

1

事情要从JavaScript说起,这个曾经的屌丝经过多年的奋战,成功逆袭,成为前端之王。

(详情参见:《JavaScript 一个屌丝的逆袭》)

这奋斗的路上,Applet, Flash, Sliverlight 等无数火热的技术成为冤魂。 

Java经常扼腕叹息:“真是可惜了我的Applet,要不然前后端编程都用Java,程序员就不用那么辛苦了。”

JavaScript对这种说法嗤之以鼻:“技术被厂商锁定,内容无法被搜索引擎搜索,程序员用你才叫见鬼。”

话虽这么说,JavaScript对自己的认识也很深刻, 优势就是看起来简单,写点儿简单程序就很容易上手,可是一旦深入开发, 两大硬伤就暴露出来。

一个是语法设计,诡异的作用域,混乱的类型转换, 蹩脚的‘面向对象’,引起了很多语言的鄙视。还有一个是性能,在浏览器端的解释执行,能快到哪里去? 

(JavaScript的OOP参见:《一个没有类的世界如何玩转面向对象?》)

2

针对第一个问题,JavaScript想了很多办法,不断地改进,不过新版本得考虑向后兼容,兼容之前那混乱的设计,这不能不说是一个巨大的包袱。

人类想到,既然这么难改,能不能开辟一条新路,把它当成一种“低级”语言呢?  

JavaScript虽然不情愿,但还是有人这么干了, 微软搞了一个TypeScript,Jeremy Ashkenas发明了CoffeeScript,它们或者支持静态类型,或者语法更加优雅漂亮, 运行的时候,把它们转化成JavaScript就OK了,啥都不耽误。

640?wx_fmt=png

JavaScript发现自己成为了浏览器中的“汇编语言”!

可是JavaScript作为前端之王,积累了海量的类库和工具链,想用新语言去完全重写是很难的, 程序员的惯性也很大,没有强烈的理由,没人愿意学习新的语言,JavaScript凑合着也能用,ECMAScript 不是在不断发展吗?

更重要的是, **Script,最终还是要以JavaScript来运行,速度还是上不去。

3

Node.js的横空出世,帮助JavaScript入侵了后端开发的领地,让Java十分头疼,不是说JavaScript性能不行吗?!

秘密在于Google的V8 引擎,其中有一项JIT技术,可以在运行时把一些热点JS代码翻译成本地的机器码来执行,性能可不就蹭蹭上去了?

可是这种技术也不是万能的,由于JavaScript的动态性,即使是强如V8引擎也会遇到麻烦。 

人们经常会举这么一个例子:

function add(x,y){

      return x + y;

}

如果用add(1,2) 来调用, V8的JIT知道这个参数是int类型,会把这个函数编译成本地的代码, 参数是int型的。

由于变成了机器码,执行起来飞快。

640?wx_fmt=png

然后人们又用 add("hello","world")来调用, V8发现,之前编译好的int类型的本地代码就无法使用了,还得重新编译成字符串参数的, 这速度一下子就降下来了。 

JavaScript有点纳闷:这性能真的那么重要吗? 我现在的速度应对前端编程不是绰绰有余?大不了我不往服务器端发展就是了!

人类的欲望是无止境的,在浏览器中不仅仅要做简单的计算,他们还想用大型设计软件,用虚拟现实,玩游戏......  这计算量JS是应付不过来的。

4

JavaScript性能的压榨已经到了极致,路已经走到了尽头。

前面是一座高山,想要翻过去必须发明发明新的工具。

微软,Google, Apple这些大佬他们举行了一次多方会谈,各方就关注的问题深入地交换了意见,对各方多年来的努力表示欣赏和赞许。

大家一致表示:早就看JavaScript这小子不顺眼了,一定想办法把它“干掉”。为了取得最大的共识,会谈并没有定义一套新的运行在浏览器中的高级语言,相反,大佬们定义了一套Web时代的汇编语言。

其他语言,不管你是C++, C, Rust, Java,  只要能编译成这个Web汇编,都可以在浏览器中执行。 

640?wx_fmt=png

(注:Web汇编其实就是 WebAssembly这门技术)

这个Web汇编的思路很有意思,它本质上是一套需要虚拟机来执行的字节码,当然是静态类型的。

例如:这个求阶乘的函数,经过编译以后,字节码会是这样:

640?wx_fmt=png

(点击看大图,来源:

https://www.slideshare.net/jayphelps/webassembly-demystified)

Java 一看到这个方案,立刻哭晕在厕所!这和自己的Java字节码多像啊!  

看看这i32.sub,  i32.mul ,一个做减法,一个做乘法,但是没有操作数跟在后边,操作数肯定保存在栈上, 所以这肯定是一套基于栈的虚拟机!

640?wx_fmt=png

(基于栈的虚拟机详情参见:《我是一个Java Class》)

早知如此,何必当初,用我的Java ByteCode, 用我的JVM, 用我的Applet多好!

绕了一圈,又回到了原点 ! 这IT大佬的政治斗争真TNND坑死人啊。

JavaScript看到这个方案也是吃了一惊,后端的老家伙们亡我之心不死,釜底抽薪,想对我实施一次珍珠港偷袭!

要不我也编译成这"Web汇编",和他们平起平坐,同台竞技?但是我是动态语言,类型需要在运行时确定,没法事先编译啊。

不过,用C/C++这种“低级”语言写前端代码,操作DOM, CSS,还不是又臭又长,这不是搞笑吗?!

确实是这样,这Web汇编并不能干掉JavaScript,语言之间需要协作。

Web汇编主要解决性能问题, C/C++可以写出高性能的“Web汇编”,来实现图片/视频编辑, 游戏,流媒体,虚拟现实,CAD软件,可视化,仿真等代码库,然后让JavaScript调用就行了, 各取所需。 

JavaScript还是前端之王,不可替代。

640?wx_fmt=gif


码农翻身公众号开放投稿,可能是全网最高片酬:

用故事讲技术 ,稿费1000

技术/职场/感悟/面试等,稿费700

翻译类文章,每千字200

详情猛戳: 可能是全网最高片酬,速来!

640?wx_fmt=jpeg

SAP学习笔记 - 用Deepseek 整理SAP 06 - SAP中,如何通过MIGO(货物移动)的核心表MKPF与MSEG进行数据追溯与报表开发? 本文详细解析了SAP系统中MIGO货物移动操作的核心表MKPF与MSEG,帮助开发者掌握数据追溯与报表开发技巧。通过实际案例和SQL示例,展示了如何高效关联查询两表,解决常见问题,并优化报表性能,适用于库存管理和业务分析场景。 阅读详情

相关推荐

mes追溯系统

mes追溯系统是对产品生产过程当中所采取的工艺、工序、原材料、负责人等信息数据进行追溯,其是MES系统当中的主要的功能模块。通过对这些信息数据的追溯,在质量问题发生时可以对相应产品信息溯源,mes追溯系统从而了解清楚具体原因。首先,MES生产追溯系统是根据相应的条码标签进行信息数据的溯源。在生产过程当中,生产车间各个工艺、工序、原材料、岗位等信息数据都会记录到每一产品的条码标签当中。同一批产品的信息数据几乎相同,因此通过溯源可以了解到同一批产品的信息数据。 其次,当产品质量出现问题的时候,mes追溯系统可

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 1495

为什么 JSX 语法这么香?

时下虽然接入 JSX 语法的框架(React、Vue)越来越多,但与之缘分最深的毫无疑问仍然是 React。2013 年,当 React 带着 JSX 横空出世时,社区曾对 JSX 有过不少的争议,但如今,越来越多的人面对 JSX 都要说上一句“真香”!典型的“真香”系列。...

Maisucsdn的博客 258

2018 年 JavaScript 的未来及远方

“The Future of Javascript 2018 and Beyond,” offers our future-looking analysis and predictions about the latest in JavaScript. We also look back at all the JavaScript craziness from 2017 and neatly tie it together with a bow.

ProphetJS:预测未来的JavaScript库

ProphetJS:预测未来的JavaScript库 prophetjsVanilla JS library to display toast messages.项目地址:https://gitcode.com/gh_mirrors/pr/prophetjs 是一个强大的JavaScript库,专为数据预测和时间序列分析设计。它的目标是将复杂的统计模型和机器学习算法封装成易用的API,让开发人员...

gitblog_00011的博客 584

ARM的CI-700和Arteris的NoC对比

设计理念:CI-700注重于为移动和客户端SoC提供定制化的互连解决方案,而Arteris的NoC更侧重于提供灵活、可配置的网络互连技术,适用于多种应用场景。性能与功耗:CI-700通过系统级缓存和网状拓扑结构优化性能和功耗,而Arteris的NoC通过物理感知和多协议支持来提升性能和降低功耗。功能安全:Arteris的NoC提供了功能安全支持,这对于汽车和工业应用尤为重要,而CI-700虽然也关注安全性,但未明确提及功能安全支持。互操作性。

ygyglg的专栏 2622

若依Vue整合积木报表实战:Token安全校验全流程解析

本文详细解析了在若依Vue后台系统中安全集成积木报表的全流程,重点阐述了Token安全校验的核心机制。通过前端菜单配置、Token传递、后端权限拦截及自定义Token服务实现,构建了一套完整的企业级报表访问安全防线,确保核心业务数据的安全可控。

t8u9v0的博客 578

ECMAScript 的未来:预测 JavaScript 创新的下一个浪潮

如下是关于 JavaScript 的基本语法和语义、核心概念、异步编程以及面向对象编程的摘要: 本文介绍了 JavaScript 的基本语法和语义,包括变量、数据类型、运算符和流程控制语句。并提供了举例以帮助读者更好地理解这些概念。 我们还深入探讨了 JavaScript 的核心概念,包括函数、作用域、闭包和原型链。这些概念是理解 JavaScript 编程的关键,并且能够帮助读者编写更高质量的代码。 此外,我们介绍了 JavaScript 中的异步编程,涵盖了回调函数、Promise 和 async

阿猫故乡的博客 1164

STM32F407+LWIP实战:手把手教你移植mbedtls库实现Modbus TCP双向认证

本文详细介绍了如何在STM32F407微控制器上移植mbedtls库,结合LWIP协议栈实现Modbus TCP的双向认证功能。通过TLS 1.2加密通道,有效提升工业物联网通信的数据安全性,涵盖证书管理、内存优化及性能调优等关键步骤,为嵌入式系统开发者提供了一套完整的解决方案。

weixin_28721917的博客 516

javascript能否做后端开发?

JavaScript通过Node.js可实现高效后端开发,具备处理HTTP请求、数据库操作等能力,适合构建API、实时应用和微服务。其优势包括全栈统一语言、异步高性能和丰富生态,但存在CPU密集型任务性能较低等局限。主流技术栈涵盖Express、Koa等框架,支持MongoDB、MySQL等数据库。企业案例如Netflix、PayPal采用Node.js提升性能。Node.js尤其适合快速迭代的全栈项目和高并发场景,学习路径建议掌握基础后深入框架与部署实践。

qq_67226268的博客 1350

〔重庆理工大学〕大学物理实验--变温霍耳效应及其参数测定

每个老师要求不同,实验报告内容和数据仅供参考。

Pretty Boy Fox的博客 3044

SAP 系统间 SSO 的真正价值,从 SM59 到可信 RFC 的安全设计

SAP S/4HANA系统间Single Sign-On(SSO)的核心价值在于集中管理通信身份与信任关系,而非仅减少密码输入。传统固定账号密码方式在系统规模扩大后会面临密码管理、审计追踪等挑战。通过SM59配置可信RFC目标系统,结合SSL证书或SAP Trusted System等强认证机制,能有效降低安全凭据暴露风险。SSO配置需配合授权对象、角色管理等建立清晰的信任边界,实现系统间安全通信的同时保持可审计性。这种方案特别适用于Fiori前端与S/4HANA后端等场景,通过可信RFC传递用户身份,避免

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1063

JavaScript 33 ,JavaScript的未来发展趋势,探索JavaScript中最新技术(JavaScript可视化编程到服务端渲染)

⭐随着 Web 应用程序变得越来越复杂和交互性的需求日益增加,基于浏览器的三维可视化编程变得愈发重要。在这方面,Three.js 和 WebGL 技术正在引领潮流。我们将深入探讨它们的原理、应用场景以及如何利用它们创建引人入胜的交互式体验。2.Three.js 和 WebGLThree.js是一个基于 WebGL 的 JavaScript 3D 库,它使创建复杂的 3D 图形变得简单。通过 Three.js,开发者可以轻松地在 Web 浏览器中创建交互式的 3D 场景、动画和游戏等。

AI Agent 全栈架构师(AI + GIS + Backend)& 数字芯片系统架构师(FPGA),NorthCity Smile的博客(NcSmile,博主域名:https://ncmile.blog.youkuaiyun.com) 1780

杰理蓝牙SPP用户接口详细文档

本文档详细介绍了基于JL701n芯片的蓝牙SPP用户接口实现。主要内容包括:1) 文件结构分析,包含必要的头文件和调试配置;2) 核心数据结构,如全局变量和TWS功能ID定义;3) 五大功能模块实现:数据发送、状态管理、数据接收、TWS支持和初始化清理;4) API接口说明,包括公共接口函数和回调函数;5) 使用教程,涵盖基本流程和高级应用示例。该接口支持虚拟串口连接,实现蓝牙设备间数据传输,特别针对TWS场景进行了优化,提供连接状态管理、数据收发等功能。文档还包含错误处理、重试机制等实用建议,适合蓝牙SP

qq_42014563的博客 1179

从一笔业务到经营摘要:四个经营节奏的数据链路与下钻追溯该怎么设计

把"经营摘要"当成报表来做,我踩过两个坑,而且第二个更难返工。第一个是口径分叉:同一笔销售回款,在合同、开票、到账、入账四个环节是四个不同的值,报表里却只能填一个,于是"计划"和"账"互相覆盖。第二个是不可下钻:用户看到"本月回款 40 万",点不进去,也不知道这 40 万由哪几笔构成、归谁负责,最后只能再来问人。 这篇按工程视角梳理一次:数据怎么从一笔业务流到一个经营数字,以及下钻追溯该落在哪一层。文中出现的公司与金额只用于示意链路结构,不是真实案例数据。 一、业务背景:一笔业务本来就有多个"事实" 在财

fengjohn的博客 176

OpenClaw零基础教程:30分钟搭建你的第一个AI自动化助手

别再看那些满是代码、专业术语的教程了,那些都是给程序员看的。这篇教程,我把所有步骤拆到了极致,你跟着点鼠标就行,点错了都没关系,大不了重装一遍,5分钟的事。

2601_94871597的博客 97

基于libVLC的视频播放器之四:直接使用libVLC

一.效果 播放本地文件 播放网络url:rtsp://3.84.6.190/vod/mp4:BigBuckBunny_115k.mov 二.实现 既然有VLC-Qt,为什么还要直接调用libVLC呢,因为直接调用会加深对整个播放流程的理解,方便后面修改VLC-Qt源码。 注意事项: 1.编译报错:error C2065: “libvlc_media_read_cb”: 未声明的标识符。修改如下: 2.libvlc_new(0, nullptr)返回null 将plugins

草上爬的博客 5049

RS报表从按月图表追溯到按日报表

相信很多COGNOS开发人员看到这个标题就会感觉很轻松,追溯无非是COGNOS自带的一个下钻的功能,但是这里却是固定的条件:   要求1:A报表显示按月的图表B报表显示按日的明细      2:追溯到B的时候B的开始日期控件和结束日期控件还可以随机选择         设置追溯      在报表Address2中添加提示页面,如下图所示   1处是导入xdate.js库

KING技术专栏 615

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ReportStudio进阶教程(二十九) - 地图开发(三)追溯报表

通过前面2次的学习,咱们已经可以将数据库中的区域信息和Cognos地图中的信息进行匹配(词典),并且可以展示基本的数据了 这回,我们来实现下在地图中,通过单击地图中的区域,跳转到该区域的明细中去 1. 新建中国地图报表 比较熟练的同学应该知道,在Cognos中有个追溯定义,在这里是差不多的 我们就来实现下,单击中国,跳转到中国地图中去 我们首先来新建一张报表,拖一个地图,选择中国地图

什么是江湖? 1673

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数据血缘治理:报表错了,先知道它从哪张表来

数据血缘治理要覆盖表、字段、任务、报表和数据版本。可以从 SQL 解析起步,允许人工修正,并把血缘用于排障和影响分析。报表数字不会凭空出现。知道它从哪来、怎么来、影响谁,数据团队才算真正掌握自己的系统。

2401_85575345的博客 4851

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JNPF全新报表亮相!你想知道的全在这里

在本次版本更新中,报表设计成为本次更新的核心重点。V5.1版本引入了全新的报表设计选型——Univer,该选型与之前的报表设计选型形成平行替代关系,为用户提供了更多的选择和可能性。Univer是JNPF为将报表模块作为独立板块进行未来发展而引入的一项新技术。Univer提供了一个全面的企业级文档与数据协同的解决方案,支持电子表格、文本文档和演示幻灯片三大核心文档类型。

JNPF 专注低代码开发 1243

追溯码是什么

追溯码的本质是给每个物品一个唯一身份,并通过信息系统记录它的全生命周期。生成与赋码:给产品打上唯一标识导入与录入:将追溯码数据进入系统流通追踪:记录每个环节的流转信息状态管理:处理激活、作废、超期等状态变更查询与报表:支持按多种条件查询和统计附件留痕:为关键操作保存证据文件权限控制:确保数据安全和操作合规无论是药品、食品、医疗器械还是普通商品,追溯码都是实现"来源可查、去向可追、责任可究"的核心手段。

小康搬砖 207

MES系统质量追溯功能,到底在追什么?

随着智能制造及信息化的发展,生产制造业在产业升级和提高生产效益的路上更是加大了探索,于是MES系统成了很多生产企业的选择,而其中的产品追溯模块也被很多厂家所喜欢。

weixin_42211283的博客 3250

花名册字段越多,越要知道哪个字段能被报表引用

员工信息、组织信息、岗位信息、合同信息、成本信息,字段越来越多,表面看数据资产更丰富。关键是写清字段的管理身份:谁维护,谁审核,哪些报表可用,哪些场景不能直接用,历史口径发生变化时怎么解释。这个字段描述什么事实,哪些流程会使用它,哪些报表会引用它,发生争议时由谁解释。临时项目加过的字段、历史政策留下的字段、某个部门单独使用的字段,如果长期不清理,会挤占报表解释空间。放到肯耐珂萨的人事数据治理视角里,花名册字段要从“能记录”走向“能解释、能引用、能追溯”,否则字段越多,争议越多。字段能解释,报表才有底气。

KNX_China的博客 143

2019报表工具价格对比

下面是通过各厂商官网,以及一些业内的朋友了解到的,仅供参考 便宜没好货? 2018 年,润乾报表开始互联网营销后,一颗重磅炸弹在不算大的报表行业中激起了阵阵波澜,报表大*降*jia了!!! 降到了润乾的历史最*低*jia,也降出了基本是行业的最*di*jia,良心*jia 客户蒙了,这是真的吗,这么多年了,报表一直是好几万一套,买断都是几十万,有些厂商还再不断的通过各...

terry_chengq的博客 6435
上一篇: 看问题要看到本质:从Web服务器说起
下一篇: 千万别学计算机
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 0粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值