【问题标题】:Including JS files in Derby.js在 Derby.js 中包含 JS 文件
【发布时间】:2013-03-24 12:05:10
【问题描述】:
我正在努力学习Derby.js,但遇到了很多麻烦。我知道我可以通过 npm 包含诸如 jQuery 之类的包并将其添加到 node_modules 文件夹中,但这并不是我想要做的。我希望能够像在普通 HTML 中一样包含这些文件。
所以我想做类似<Head:> <script src="js/jquery.js"></script> 的事情。这不起作用,因为它找不到 js 目录。我希望这与 node.js 运行应用程序的方式有关,并且应用程序本身不会保存 js 目录。
任何帮助将不胜感激!
【问题讨论】:
标签:
javascript
jquery
node.js
derbyjs
【解决方案1】:
Derby 提供Script: 标签:
<Scripts:>
<script type="text/javascript" src="/components/jquery/jquery.js"></script>
组件目录是因为bower的使用。将components 目录放入public 目录。根据express FAQ,静态路由搜索下面给定目录(在derby 的示例应用程序中是公共的)。配置 bower 将文件放在public/components (Choose bower install directory) 下。
公共目录配置在lib/server/index.js:.use(gzippo.staticGzip(publicPath, {maxAge: ONE_YEAR})),其中publicPath上面配置为path.join(root, 'public')。
请注意,“内联脚本背后的想法是,它会在加载任何外部脚本之前立即运行。这只应在极少数情况下使用,即脚本应在页面显示在浏览器中之前运行,例如调整窗口大小或在不支持“自动对焦”属性的浏览器中自动聚焦元素。” Nate Smith in the derby google group.
内联脚本应放在inline.js,与应用程序的index.js位于同一目录中。
如果您需要 jQuery 在加载的页面上执行某些操作,以下代码在 inline.js 中在我身边(Firefox、Chrome)工作:
window.onload = function() {
alert($(this));
}