有效执行的javascript,而不是字节码和机器代码

电脑杂谈  发布时间:2020-06-18 03:23:57  来源:网络整理

字节码和机器码的区别_字节转换ascii码_一个ascii码占几个字节

每个人都知道react是Facebook的产品,angular是Google的产品,angular用打字稿写成. 使用typescript,此javascript具有超强的适应性,可轻松用于开发大型应用程序.

形成自己的生态,自己的语言和自己的框架. 因此,Facebook可能不甘落后,并准备使用其他语言来高效地编写稳定可靠的javascript语言. 最后字节码和机器码的区别,我选择了具有20多年历史的ocaml语言. 据估计,很甚至听说过这种语言.

这是一种功能编程语言. 但是ocaml无法在浏览器上运行,它需要对前端熟悉javascript的程序员友好. 为了解决这些问题,Reason出现了,原因是OCaml的语言界面,它对具有JavaScript开发经验的开发人员很友好. 有了理性,如何将理性编译成javascript?答案是BuckleScript,BS(BuckleScript)是将ocamel / reason编译为javascript的编译器.

这不是简单的编译和转换工具,BS不仅可以使用Ocaml

该代码被编译为javascript,并且可以被编译为高效的javascript,并且易于阅读. 您看不到编译的代码是由机器编写的,而BS也是由中文编写的,这是我们的骄傲.

这三种相对独立的语言和工具如何建立它们之间的关系?

字节转换ascii码_字节码和机器码的区别_一个ascii码占几个字节

让我们分析Ocaml编译器,看看它们如何集成在一起.

我们将Ocaml编译过程作为切入点进行分析,并将这三个过程连接起来.

源代码: 在此阶段,编译器获取OCaml代码

无类型AST: 执行代码分析和预处理,然后生成无类型AST.

类型化的AST: 然后会猜测并测试类型,以生成类型化的AST.

Lambda IR: 这应该是Ocaml的重点,但今天不应该成为我们的重点,但是您可以了解它

将定义的AST类型转换为无类型IR,转换格式基于s-express

一个ascii码占几个字节_字节码和机器码的区别_字节转换ascii码

这句话中出现了两个难懂的词IR和s-express

我不知道是否找到了S-express. 我在Wiki中找到了它. 让我们尝试了解它.

百度,百度的翻译还不错. 在此基础上进行解释.

** s-expression **应该是表示数据结构的表达式,例如(* 2(+3 4)),用于表示以这种方式生成的树结构的数据. 是嵌套列表(树结构)数据的表示,是由编程语言lisp发明和推广的,将其用于源代码和数据.

字节码: 最后,在推断之后,IR被编译为字节码或机器码

了解ocaml的整个编译过程,那么我们的原因和b出现在什么阶段?

原因出现在无类型AST的编译阶段. 通过一些预处理,我们的源代码可以解析为AST以支持一些新的语法功能

字节码和机器码的区别_一个ascii码占几个字节_字节转换ascii码

BuckleScript将使用未类型化的IR来编译为可有效执行的javascript,而不是字节码和机器代码

BuckleScript编译的javascript的魔力可能比您的魔术更好. 计算机更喜欢功能编程. 让我们拥抱机器,学习一些困难但有效的功能编程.

React已使用原因来编写组件,其好处在下面列出.

-一种更安全,更简洁的构建React组件的方法

-与JSX完全兼容

-类型安全性与使用javascript编写的组件兼容

-用于新的表达API来描述状态管理

字节转换ascii码_字节码和机器码的区别_一个ascii码占几个字节

昨天我们通过一个示例做了一个简单的演示. 我也知道我们可以使用理由来编写React组件. Reason提供了两个模板供我们创建组件.

statelessComponent

let component = ReasonReact.statelessComponent("SimpleComponent");let make = _children => { ...component, render: _self =>
(ReasonReact.string("Reason Projects"))
,
};

然后我们创建一个TutData.re文件,该文件定义了tut类型并定义了数据的结构.

type tut = { title:string, body:string}

我们创建一个StatesComponents组件.

let component = ReasonReact.statelessComponent("SimpleComponent");let make = _children => { ...component, render: _self => {  

(ReasonReact.string("Reason Projects"))

; },};

我们正在定义一个组件TutItem,〜tut表示要标记此参数,尽管我们可以调整参数的位置字节码和机器码的区别,然后通过标签将值传递给参数.

let component = ReasonReact.statelessComponent("TutItem");let make =(~tut: TutData.tut, _children) => { ...component, render: _self => { //创建数据  
(ReasonReact.string(tut.title))
; },};

创建tut类型的dummyTut数据,然后通过prop将dummyTut传递到组件.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-249266-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 天空骑士刚科尔
        天空骑士刚科尔

        真是弱爆

      • 霍倩倩
        霍倩倩

        绝不手软

      • 邢子彤
        邢子彤

        这次的mv也太洗脑了感觉我智商捉急

      热点图片
      拼命载入中...