写 Cirru Parser 的缘由, 对照文档搞了半天, 也是搞定了.
而后回头来一想, 好多地方搞不明白的, 之后万一模块须要维护恐怕还麻烦
因此打算留一点笔记在这里, 也留一点感想但愿有多一点人重视这些东西git
Julia 的模块也有本身的网站, 作为新兴的语言, 算是了不得了
http://pkg.julialang.org/
托管的方案比较理想化, 使用 GitHub 管理的, 一个仓库里边的列表,
里边还会记录不少模块的信息, 以及 Jarvis 生成的版本数据等等
https://github.com/JuliaLang/METADATA.jl
完整的文档能够看官方的, 详细过头了, 另外也有中文的文档翻译:
http://julia.readthedocs.org/en/latest/manual/packages/
https://github.com/JuliaCN/julia_zh_cngithub
Julia 管理模块用的不是命令行, 而是 REPL, 好比 Pkg.install('package')
安装的模块都在 ~/.julia/
目录下, 并且能够用简单的语法 pin 版本Pkg
模块下挂载的方法仍是很强大的, 我在 npm 当中基本的需求也算都有
甚至有个 Pkg.rm('package')
, 实际是移动到 trash/
目录当中, 还好不是真的删除.npm
用户的机器上 ~/.julia
目录下存在一个 METADATA/
目录, 对应 GitHub repo
全部的模块都在这个仓库里注册, 查找其中的地址, 而后从 GitHub 下载
下载的模块也一直存储在 ~/.julia/
这个目录当中, 直接访问就能看代码
而注册一个模块其实是往 METADATA/
里写数据, 而后提交 PR 请求.Pkg.register('package')
就是为了自动完成这个事情,
只不过 register 反应很慢, 或许是国内网络的缘由, 我最终仍是手动提交的 PR编程
Julia 这样的管理方式, 让我想到的是 Sublime Text 跟 Atom, 他们的模块就这样管理的,
因此开发了新的模块须要到 GitHub 上 fork 他们的仓库, 而后审核.
而用 GitHub 托管模块, 像是 Go 社区作法, 并且 Go 也是有的专门目录存放模块
Julia 模块 PR 比较后会触发 Jarvis, 运行模块中的测试, 来检验下模块的质量ruby
另外一个就是模块引用的问题了, Julia 有三种引用模块的函数 import using include
具体我也经常弄乱, 中文翻译的文档上有个表, 我建议是看这个表
https://github.com/JuliaCN/julia_zh_cn/blob/1d8a792e374c71c47c9202286c...import
跟 using
在功能上彷佛有很多重合的地方, 不明白为何这样设计
整体感受有点复杂, 但也不打容易出错, 我第一次写, 问题也不是很大
模块的写法, 用 module
包裹, 用 export
暴露方法, 而后就能够了, 教程清晰网络
我最后完成的例子是这样的, 带测试源码结构也简单
https://github.com/Cirru/CirruParser.jl
我注意到 Julia 的社区很小, 主要也就是邮件列表人挺多的天天有帖子
https://groups.google.com/forum/#!forum/julia-users
其余的话 Gitter 上也就一两我的, 很冷清
http://julialang.org/community/
https://gitter.im/JuliaLang/julia
可是从总体设计上算是很棒的了编程语言
加一点, Julia 大概是没有打包可执行命令的标准方案, 文档跟社区都没找到
我应对的办法就只有说 README 里写一段, 手动加软连接了函数
Gem 编写虽然有中文 Ruby 社区, 可是整体感受仍是要比 Julia 难一些
首先我引用 Node 模块, 模块名 a
, 文件名 ./a
, 很是明确
Julia 当中 import
查找模块以及当前路径, 也很容易查找问题
到了 Ruby 真是绕了我半天, 又是 $LOAD_PATH
又是版本更新废弃用法...
好吧弄明白 $LOAD_PATH
算好点, 硬生生在文件里加上代码指明引用相对的位置:测试
ruby$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/lib")
另外遇到个问题就是引用模块提示找不到方法:
https://ruby-china.org/topics/25290
大概只是由于 Ruby 的 module
关键字用法跟 Ruby 不一样致使的
站在个人角度, Ruby 在设计上不含糊的地方真是很多, 有点难受
细节我无法说清楚, 可是我完成的版本是这样的, 不少奇怪的写法:
https://github.com/Cirru/parser.rb网站
Ruby 发布 Gem 的流程却是很是干脆, 注册账号, build, push, 好了.
附带一些填写 gemspec
运行 bundle
在文档上算比较明确
不过我仍是有点糊涂, gem
bundle
两套命令究竟什么缘由
相对有 Node 来讲, Ruby 还有 Julia 会自动生成模块模版, 也挺有意思的
gem 是统一安装在系统当中的, 这个我没深刻看了
两年前我拉过一次列表, 稍微看了下各类不一样的编程语言打包是怎样的:
https://github.com/coffee-js/languages/wiki/各类编程语言的模