js包是在R中使用JavaScript的工具,实现对几个流行的JavaScript库的绑定,用于编译、验证、重新格式化、优化和分析JavaScript代码。建立在V8包的基础上,可以调用这些库
1.在R中验证JavaScript代码在语法上是否正确#js_typeof(),如果代码无效将引发SyntaxError,用于验证单个函数或对象
callback
js_typeof(callback) #'function'
js_typeof('function(x,y){return x + y}') #'function'
conf
js_typeof(conf) #'object'
#JavaScript程序验证:由JavaScript语句集合组成,用js_validate_script()函数
jscode
js_validate_script(jscode) #TRUE
js_validate_script('function(x, y){return x + y}', error = FALSE) #FALSE不允许在全局范围内定义匿名函数
2.ESprima:解析,支持ECMAScript2017并返回由ESTree项目标准化的合理语法树格式esprima_tokenize(text,range=FALSE,loc=FALSE,comment=FALSE) #返回data.frame
text:JavaScript代码的字符向量,range:以0为基准注释每个标签的起始位置+结束位1:300,loc:注释每个标签起始行+起始列+终止行+终止列的位置,numeric类型
esprima_parse(text,jsx = FALSE,range = FALSE,loc = FALSE,tolerant = FALSE,tokens = FALSE,comment = FALSE) #返回'JS_EVAL'类型,解析成树形结构
3.compiling coffeescript,编译coffee script into JavaScript,代码一对一地编译成等效的JS,coffeescript函数绑定到coffee script cpmpilercat(coffee_compile("square = (x) -> x * x"))
cat(coffee_compile("square = (x) -> x * x",bare=T))
demo
cat(demo, sep = "\n")
js
cat(js)
uglify_optimize(js) #压缩js,将代码重写为更紧凑但等效的程序
4.uglify_reformat重新格式化,很适合修复空格、分号等code
cat(uglify_reformat(code, beautify = TRUE, indent_level = 2))
5.JSHint代码分析,自动检测JavaScript代码中的错误和潜在问题,返回data.framecode
jshint(code)
相关文章: