首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

保护 Node.js 项目的源代码

传统的后端运行环境,如 Java、.NET,其源代码是经过编译才部署到服务器上运行的,不存在泄露的风险。而对于应用越来越广泛的 Node.js 而言,运行的则是源代码。...原理 当 V8 编译 JavaScript 代码时,解析器将生成一个抽象语法树,进一步生成字节码。...index.js dist/ compile.js src 目录内的两个文件为源代码,内容分别为: // lib.js console.log('I am lib'); exports.add = function...然而,直接执行 node index.jsc 是无法运行的,因为 Node.js 在默认情况下会把目标文件当做 JavaScript 源代码来执行。 此时,就需要对 jsc 文件使用特殊的加载逻辑。...字节码的问题 虽然编译成字节码后可以保护源代码,但字节码也会存在一些问题: JavaScript 源代码可以在任何平台的 Node.js 环境中运行,但字节码是平台相关的,在何种平台下编译,就只能在何种平台下运行

3.2K63

基于解析器组合子的语法解析器(上)

3.解析器组合子(Parser Combinator) 解析器组合子本质上是一种高阶对象,其接收多个其他解析器作为参数,构造出一个新的解析器。...3.1 如何实现解析器组合子 解析器组合子是由小到大、由简到繁构成的解析器。因此首先要实现的,便是其中最基础的单元构件。...3.1.2 单位元解析器 在定义完解析器的接口后,便可以开始构造最基础的元解析器。...选择解析器的功能与序列解析器相似,但表达的是or的概念,只要有一个子解析器匹配成功,则认为当次的解析成功。...例如要从HelloWorld中匹配到Hello序列,首先需要构造一个匹配字符的解析器,之后按照Hello的顺序依次将对应字符的解析器传递给序列解析器,便可生成一个可以匹配Hello序列的解析器: ;匹配字符的解析器

2.5K50

JavaScript 实现 JSON 解析器

编写 JSON 解析器所需的知识和技术可以转移到编写 JS 解析器中。 因此,让我们开始编写 JSON 解析器! 理解语法 如果您查看了规范页面,会发现有2个图。 •左侧的语法图(或者铁路图): ?...基于文本的语法( Backus-Naur 形式)通常被提供给另一个解析器,该解析器解析该语法并为其生成一个解析器。? 在本文中,我们将重点关注铁路图,因为它是可视化的,而且似乎对我更友好。...对于解析器,这意味着使用适当的错误消息对开发人员进行提醒。...有很多比大喊大叫来处理错误消息的更好的方法,您可以考虑将以下几点添加到解析器中: 错误代码和标准错误消息 这对于用户向 Google 寻求帮助作为标准关键字很有用。...一旦掌握了语法,就可以开始基于语法来实现解析器。 错误处理很重要,更重要的是拥有有意义的错误消息,以便用户知道如何解决它。 现在您知道了如何实现简单的解析器,是时候着眼于更复杂的解析器了。

3.4K30

Python 之父的解析器系列之七:PEG 解析器的元语法

让我们的元解析器如法炮制。我们将为语法编写一个语法(元语法),然后我们将从中生成一个新的元解析器。幸运的是我从一开始就计划了,所以这是一个非常简单的练习。...请注意,对于像 NAME 这样的全大写标识符,生成的解析器会使用小写版本(此处为 name )作为变量名。...因此,我们要对生成的解析器添加一些调整,允许动作通过返回 None 来使备选项失效。...有了这些东西,元语法可以由辅助的元解析器解析,并且生成器可以将它转换为新的元解析器,由此解析自己。更重要的是,新的元解析器仍然可以解析相同的元语法。...如果我们使用新的元编译器编译元语法,则输出是相同的:这证明生成的元解析器正常工作。 这是带有动作的完整元语法。

1.4K60

php-XML Expat 解析器

浏览量 1 有两种基本的 XML 解析器类型: 基于树的解析器:这种解析器把 XML 文档转换为树型结构。它分析整篇文档,并提供了对树中元素的访问,例如文档对象模型 (DOM)。...基于事件的解析器:将 XML 文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。 Expat 解析器是基于事件的解析器。 <?...php // 通过 xml_parser_create() 函数初始化 XML 解析器 $parser=xml_parser_create(); // 创建配合不同事件处理程序的的函数 function...echo ""; } function char($parser,$data){ echo $data; } // 添加 xml_set_element_handler() 函数来定义,当解析器遇到开始和结束标签时执行哪个函数...xml_set_element_handler($parser,"start","stop"); // 添加 xml_set_character_data_handler() 函数来定义,当解析器遇到字符数据时执行哪个函数

58310
领券