介绍
PyJs是一种浏览器端的CommonJs实现
PyJs特别适用于一些只有静态文件构成的项目,最佳是只有js构成的项目,如baidu connect sdk.
使用
-
pyjsdir
pyjsdir是pyjs运行的核心文件夹,所有commonjs规范的js文件,必须放在pyjsdir中,默认为src,可在manifest.json中设置。
-
本地服务器中使用pyjs
使用
python pyjs.py runserver
启动本地服务器
测试页面中引入lib/pyjs.js
对于以.js结尾的文件,将查找相对路径,若相对路径下没有原文件,则搜索pyjsdir下文件或文件夹,若有文件与之相同,则编译包之后返回,replace为local。若有文件夹与去除.js部分相同,则查找文件夹下__init__.js文件,若有,按里面定义的__all__数据取出所有文件,编译之后返回。
-
编译
上线前,运行
python pyjs.py
会在build文件下生成所有commonjs模块文件。manifest中可以制定combo_url,若指定,运行编译后文件的require时,将通过combo请求文件。若没有指定,将同时加载多个js文件。
文件同时会生成boot.js,里面有文件的依赖关系,线上html引用这个文件即可。
manifest.json声明属性
-
version
type:string
版本号
-
pyjsdir
type:string
pyjs包所在的文件夹,默认为src
-
combo
type:object
设置combo,属性combo_url标志combo目标url
-
replace
type:object
token: %#xxx#%,将替换文件中%##%中间的字符
"replace":{ "replace_type":{ "token1":"url1", "token2":"url2", "token3":"url3" } }
Local Transimission
本地server启动后,若配置server.json,会启用请求转发。
server.json声明分为两部分,key为正则,对应匹配url请求规则;value为映射
-
映射到线上请求
所有以http开头的都会映射到线上请求
这里不会做权限控制等,有复杂需求使用自定义插件
-
映射到本地插件
所有以plugins开头都会映射到本地插件,对应到plugins的相应module中。
module文件必须包含main函数,会将请求的search参数传入到main函数中。
返回值: content-type , body