1
最近,我一直在尝试使用sailsjs构建一个非常简单的聊天应用程序,该应用程序只有3个页面,每个页面都有不同的参考数据集Twitter的预输入JS,我打算做的是这样的:将javascript注入到Sailsjs中的所有全局javascript后的特定视图/路由
var socket = io.connect('http://localhost:1337');
$(document).ready(function() {
var $modalLayer = $(JST['assets/templates/generic/modal.html']({}));
$modalLayer.appendTo("body").modal('show');
socket.on('connect', function() {
socket.request('/chat/references', {}, function (data) {
console.log(data);
bindTypeAhead(data);
$modalLayer.modal('hide');
});
});
对于不同的网页我有不同的逻辑,所以需要分成不同的JavaScript文件。
我已经试过是:在pagea.ejs使用标签
- 和pageb.ejs
- 使用<% - 块( 'localScripts', 'SCRIPT_TAG')%>
这两种方法都使脚本出现在pipeline.js中定义的所有javascript注入之前,因此socket.io变得未定义。
我在stackoverflow上找到的一些解决方案是将javascript注入移动到“< head>”,但我认为这是一种很不好的方式,我真的不想打破sailsjs约定。
有没有人有这样做的好方法?
非常感谢。
我使用的风帆版本为0.10.5。
它是在所有注射后出现的吗? layout.ejs默认由sailsjs自己填充,我没有单独的一个,请问你能告诉我你是如何做到的? – hjbolide 2014-11-25 07:43:20
在您的页面中,您可以使用<%layout('layoutName') - %>标记来指定要在views文件夹中使用或修改layout.ejs的布局。 您可以在以后将您<%-scripts%>标签: <! - 模板 - > < - TEMPLATES END - > < - 脚本 - !> < - SCRIPTS END--! > – Dinana 2014-11-25 07:50:13
这是否意味着我们需要为每个我们想要特殊js文件的页面创建特定布局? 根据config/view.js中的文档,布局用作顶级HTML模板。这意味着我们将有重复的代码。 – hjbolide 2014-11-25 08:06:25