Narwhal是一个跨平台、多解释器、通用JavaScript平台。它旨在为构建JavaScript应用程序提供坚实的基础,主要是在web浏览器之外。Narwhal包括一个包管理器、模块系统和用于多个JavaScript解释器的标准库。目前,独角鲸对犀牛的支持是最完整的,但其他发动机也有。
Narwhal的标准库符合CommonJS标准。它被设计为与多个JavaScript解释器一起工作,并且很容易添加对新解释器的支持。只要可能,它都是用纯JavaScript实现的,以最大限度地在引擎之间重用代码。
Narwhal与Jack(一个类似Rack的JSGI兼容库)相结合,为创建服务器端JavaScript web应用程序和框架(如Nitro)提供了一个平台。
主页:
文档
注:如果您在GitHub上查看此内容,以下链接将无效。请在文档/目录此存储库的。
快速入门
下载Narwhal。
- 下载并解压缩zip或tar存档,或
git克隆git://github.com/280north/narwhal.git
把独角鲸放在你的路径
环境变量。
export PATH=$PATH:~/norwhal/bin
,或
源独角鲸/箱/激活
运行独角鲸
或js型
(它们是等效的)。
看看独角鲸的选择。
对于Tusk,包管理器和虚拟环境工具。
我的第一个Web服务器
创建一个项目“hello-web”。
象牙初始化hello-webcd你好web
使用将项目输入为“虚拟环境”激活
或海
这样,当您运行Narwhal时,它的库、二进制文件和包就会自动安装。
源箱/激活
或
垃圾桶/海水
安装一些您需要的包,比如Jack,用于互操作web服务的JSGI标准库。
象牙安装千斤顶
Tusk在“hello-web/packages/jack”下载并安装。
创建您的jackconfig.js
.
exports.app=函数(env){var text=“你好,Web!”;返回{状态:200,标题:{“Content-Type”:“text/plain”,“Content-Length”:字符串(text.Length)},正文:[text]};};
快跑!
自升式起重机
自升式平台
查找名为jackconfig.js
或者您可以指定Jack应用程序的路径。
正常开放本地主机:8080/在您的web浏览器中。
模块系统基础
Narwhal“脚本”是与CommonJS兼容的模块,很像Python或Ruby模块。您不必使用模块模式样板;每个模块都有自己的本地作用域。您可以通过调用要求
.
var FS=要求(“文件”);FS.isFile(“foo.txt”);
的模块标识符要求
有三种风格:“顶级”、“相对”和“绝对”。在上述情况下,文件
是“顶级”标识符,因此它将加载任何调用文件.js
在中图书馆
加载路径中最先出现的包的目录。相对标识符有.
或..
作为其第一个术语,和术语用分隔/
所以,在foo/bar(英尺/巴)
模块,要求('./baz)
将加载foo/baz公司
绝对模块标识符不应直接使用,而是在模块路径外执行程序模块时生成的。模块由其完全限定的路径标识,从/
.
可以通过将对象指定给出口
.
exports.foo=函数(){return“你好”;};
在模块中,您还可以获得模块
具有模块.id
和模块路径
属性,以便您可以检查自己的顶级模块标识符和自己的模块文件的路径。您还可以获得require.main公司
属性,该属性告诉您启动程序的模块的顶级模块标识符。
if(require.main==模块)main();var设置=require(require.main);var FS=require(“文件”);var路径=FS.path(module.path);var indexHtml=路径.resolve(“./template/index.html”).read();
除了CommonJS规范之外,您还可以获得打印
函数和系统
免费的模块对象。这个打印
函数接受可变参数,并将包含由空格分隔的参数的单行写入标准输出和刷新。这个系统
模块可以用显式要求require(“系统”)
这是受鼓励的,因为这是符合CommonJS的必要条件。不要使用打印
或系统
在标准库中。
包含模块摘要
系统
:参数
,环境
,标准输入
,标准输出
,标准错误
国际奥委会
:字节IO
(阅读
,写
,到字节字符串
,toString(字符串)
),字符串IO
(阅读
,写
,复制
,脸红
,迭代器
,对于每个
,读一行
,读行
,下一个
,打印
,toString(字符串)
,子串
,片
,子(substr)
),国际组织
(阅读
,写
,复制
,脸红
,关闭
,伊萨蒂
),文本输入流
(未经加工的
,读一行
,下一个
,迭代器
,对于每个
,关闭
),文本输出流
(写
,writeLine(写入行)
,写入行
,打印
,脸红
,关闭
)
文件
:打开
,阅读
,写
,复制
,链接
,符号链接
,重命名
,移动
,去除
,mkdir公司
,mkdirs(mkdir)
,rmdir(远程管理目录)
,rmtree(rmtree)
,触摸
,chmod公司
,大杂烩
,列表
,列表树
,列表目录树
,copyTree(复制树)
,是绝对的
,is相对
,isDrive(isDrive)
,可读
,是可写的
,地球仪
,全局路径
,fnmatch公司
,比赛
,无缝线路
,cwd路径
,参加
,分裂
,决定
,相对的
,绝对的
,正常的
,规范的
,根
,目录名
,基名
,延伸
,路径
,新路径
(到
,从
, …)
操作系统
:出口
,睡觉
,教皇
(等待
,标准输入
,标准输出
,标准错误
,沟通
(地位
,标准输入
,标准输出
,标准错误
)),系统
,命令
,地位
,询问
二元的
:二元的
(到阵列
,到字节数组
,toByteString
,索引属于
,最后索引
,的值
),字节字符串
(长度
,toString(字符串)
,分裂
,片
,子(substr)
,子串
,到源
),二进制数组
(toString(字符串)
,流行音乐
,推
,向右扩展
,取消移位
,向左扩展
,颠倒
,片
,剪接
,分裂
,对于每个
,每一个
,一些
,地图
,减少
,减少右侧
,置换
,到源
)
断言
:断言错误
,失败
,好 啊
,平等的
,不相等
,深度相等
,非深度相等
,strictEqual(严格相等)
,非严格相等
,投掷
,断言
(通过
,错误
,部分
)
测试
:运行
,日志
(脸红
,通过
,失败
,错误
,开始
,结束
,报告
,打印
,部分
,断言
),章节
(打印
)
实用程序
:操作人员
,不
,对象
,阵列
,一串
,应用
,复制
,deepCopy(深度复制)
,代表
,钥匙
,值
,项目
,伦恩
,有
,得到
,设置
,获取设置
,切
,放
,第一
,最后的
,更新
,深度更新
,完成
,deepComplete(深度完成)
,去除
,范围
,对于每个
,用于每个应用
,地图
,地图应用
,每一个
,一些
,全部的
,任何
,减少
,减少右侧
,拉链
,转置
,列举
,是
,等式
,氖
,书信电报
,gt公司
,勒
,通用电气
,穆尔
,通过
,比较
,分类
,已排序
,颠倒
,颠倒的
,搞砸
,独特的
,逃跑
,询问
,扩大
,修剪
,修剪开始
,修剪结束
,pad开始
,焊盘端
,拆分名称
,joinName(联合名称)
,降低
,上面的
,骆驼
,标题
http协议
:打开
,阅读
沙
,沙阿256
,md5型
,md4型
,crc32型
:搞砸
utf8接口
,底座64
,基数16
:编码
,解码
jsmin(最小值)
:编码
杰森路径
:决定
记录器
:记录器
(添加
,格式
)
参数
:分析程序
(解析
,选项
, (_
,__
,名称
,显示名称
,获取名称
,获取显示名称
,行动
,设置
,推
,股份有限公司
,12月
,选择
,定义
,验证
,输入
,输出
,数
,十月
,十六进制
,整数
,自然的
,整体
,布尔
,托多
,反向
,帮助
,停止
,隐藏的
),组
(选项
),定义
,重置
,命令
,参数
,参数
,行为
,行动
,有益的
,使用
,帮助
,打印帮助
,打印使用
,打印命令
,打印选项
,打印选项
,错误
,出口
,打印
,检查
),使用错误
,配置错误
学期
:流
(使可能
,使残废
,写入代码
,打印
,打印错误
,写
,更新
,移动到
,移动方式
,家
,清楚的
,清除
,清除Down
,clearLine(清除线路)
,清除右侧
,错误
(打印
,写
)),颜色
,流动
乌伊德
:乌伊德
哑剧演员
:最佳匹配
,解析MimeType
,解析MediaRange
,适合度和质量已分配
,已分析的质量
,质量
html格式
:转义HTML
,条带标签
参考-发送
,承诺
,事件
:什么时候
,推迟
(决定
,拒绝
,承诺
),
事件-停止
:排队
打印
:打印
,格式化输出
,把格式数据写成串
查询字符串
:联合国环境规划署
,逃跑
,纤细的
,parseQuery(解析查询)
沙箱
:沙盒
装载机
:装载机
(决定
,解决Pkg
,找到
,取来
,负载
,重新加载
,已加载
,已更改
,路径
,扩展
),决定
,解决Pkg
包装
:秩序
,目录
口译译员
:上下文
(评估
,导入脚本
,导入脚本
,模块
,功能
)
拉链
:解压缩
,解压缩
(迭代器
,对于每个
,关闭
),条目
(获取名称
,是目录
,打开
,阅读
,复制
)