我想将Dojo Toolkit与Meteor一起使用.
我首先复制整个Dojo Toolkit树 /public
然后,我将它包含在客户端:
<script src="/dojo/dojo.js" data-dojo-config="async: true"></script>`
Run Code Online (Sandbox Code Playgroud)一切正常,除了Meteor实际上监视每个文件/public
的更改,以便它可以重新启动服务器.这实际上是在第一次请求期间造成非常长的延迟localhost:3000
.
有没有办法阻止Meteor观看某个目录中的文件?
Dojo Toolkit是10k +文件,因此我在此处声明了EMFILE错误,并进行了更正
sudo sh -c 'echo 16384 > /proc/sys/fs/inotify/max_user_watches'
Run Code Online (Sandbox Code Playgroud)
意识到这与:使用 Meteor 生成和提供静态文件重复
请参阅: https: //github.com/meteor/meteor/issues/437
这对我来说是一个大问题。我必须提供大约 12000 张静态图像,我最初将其放入公共文件夹中。这导致节点持续使用近 100% 的一个 CPU 核心。由于内存有限,应用程序崩溃。
我目前使用的解决方法
public/.#static/
并将所有静态资源移入其中。该文件夹不被流星监视/img/cat.png -> /static/img/cat.png
)前缀安装 mime npm 包
cd ~/.meteor/tools/latest/lib/node_modules/
npm install mime
Run Code Online (Sandbox Code Playgroud)创建一个 rawConnectionHandler 来提供资产(归功于: https: //stackoverflow.com/a/20358612)server/static_files_handler.coffee
fs = Npm.require('fs')
mime = Npm.require('mime')
WebApp.rawConnectHandlers.use (req, res, next) ->
re = /^\/static\/(.*)$/.exec(req.url)
if re isnt null # Only handle URLs that start with /static/*
filePath = process.env.PWD + "/public/.#static/" + re[1]
type = mime.lookup(filePath)
data = fs.readFileSync(filePath, data)
res.writeHead 200,
"Content-Type": type
res.write data
res.end()
else # Other urls will have default behaviors
next()
return
Run Code Online (Sandbox Code Playgroud)这种方法的局限性:
如果您不想解决这些问题,请考虑通过外部服务(例如 AWS S3)提供资产。
对于使用 Meteor 构建的大型应用程序来说,这是一个大问题。我与 Meteor 的 Matt 进行了交谈,他说他们的团队正在为即将发布的版本之一寻找解决方案。因此,请阅读他们的时事通讯,当有可用时您会收到通知。
马蒂厄,您的评论:
我终于找到了解决方法。我将所有内容都放在 /public/lib/ 中。然后,在 /usr/lib/meteor/app/run.js 的第 286 行,我添加了我不希望 Meteor 观看的文件夹: self.exclude_paths = [ path.join(app_dir, '.meteor', '本地'), path.join(app_dir, 'public', 'lib') ]; 这样我就可以在 lib 中拥有尽可能多的文件,并且它们不会减慢一切速度。包含路径是“/lib/dojo/dojo.js”。
目前来说这是一个很好的技巧,以下是即将发布的版本中也将涵盖的其他相关问题:
有些包具有重叠的依赖关系,但不要像 PHP 的 require_once() 那样排除它们。
本机 require/define 动态脚本加载器,因此并非所有文件都加载到可以计算依赖顺序而无需转到级别、lib 或 main 的第一个条目上。*
创建包并将其部署到存储库的官方方法。目前它正在使用Meteorite (mrt) 和Atmosphere。
归档时间: |
|
查看次数: |
3518 次 |
最近记录: |