如何规划新 JS 应用程序的结构
How to plan the structure of a new JS application
我即将启动一个项目,使用他们的客户端 - 服务器应用程序技术为Apple TV创建一个应用程序。该应用程序将使用Javascript编写,并将使用Apple的JavaScript API(称为TVJS)处理XML模板视图(称为TVML)的加载。
他们的代码示例非常基本;只有一个文件,其中包含一些用于加载模板、处理单击事件等的功能......
在我参与过的其他项目中,我有幸使用已经预定义的结构,例如,我使用Appcelerator Titanium构建了一个iOS应用程序,该应用程序与它自己的文档MVC框架一起打包。
但是,现在我独自一人,我需要考虑如何在纯Javascript中设置应用程序结构。
有人可以建议我从哪里开始创建应用程序文件和代码结构吗?我正在努力在网上找到初学者教程。
如果您觉得可以用更雄辩的方式提出这个问题来帮助偶然发现这个问题的人,也请随时编辑这个问题。
你想尝试的东西,都可以使用苹果提供的TVMLCatalog示例代码。
要构建应用程序,基本上需要考虑 2 个角色,一个是视图端(模板),另一个是事件处理(演示者.js示例)。
制作一个通用的文档加载功能,尝试尽可能多地使用它。每当触发事件时,使用一些 if/else 块或 switch 语句来确定该怎么做。
我已经为演示器端添加了所有必要的代码,我想如果你知道 JS,应该很容易弄清楚其余的。
defaultPresenter: function(xml) {
if(this.loadingIndicatorVisible) {
navigationDocument.replaceDocument(xml, this.loadingIndicator);
this.loadingIndicatorVisible = false;
} else {
navigationDocument.pushDocument(xml);
}
},
addEventsToDocument: function(doc){
doc.addEventListener("select", this.load.bind(this));
doc.addEventListener("play", this.load.bind(this));
doc.addEventListener("highlight", this.load.bind(this));
doc.addEventListener("holdSelect", this.load.bind(this));
doc.addEventListener("change", this.load.bind(this));
},
buildCompilationTemplate: function(params, data) {
var resource = TemplateCompilation(params, data);
this.buildDefaultTemplate(resource);
},
buildDefaultTemplate: function(resource) {
var doc = this.makeDocument(resource);
this.addEventsToDocument(doc);
this.defaultPresenter.call(this, doc);
},
load: function(event) {
var self = this,
ele = event.target,
navigateTo = ele.getAttribute("navigateTo");
if (navigateTo !== '') {
if (event.type !== "select"){
return;
}
if (navigateTo === 'Compilation') {
var params = ele.getAttribute('params');
fetchCompilationService(params, function(data) {
self.buildCompilationTemplate(params, data);
});
}
回答来自非演示者代码结构的评论的问题:
目前加载脚本的方式是使用evaluateScripts功能,没有导入或需要机制。尽管人们可能会编写一个工具来使它们工作。
因此,目前唯一的选择是使用 gulp/grunt 来连接 js 文件。您可以在 gulp 脚本中指定 js 文件的顺序,并构建一个要交付的 js 文件。我的偏好如下:
app.js
js
API.js
services.js
vendor
async.min.js
resources
templates
home.xml.js
episode.xml.js
most-popular.xml.js
主入口点是 app.js 文件,它具有特定于应用的配置并调用模板、事件设置等。
错误.js文件包含一些错误处理功能,我在我的所有应用程序中使用的。 基本上是一些警报模板。
API.js文件具有特定于服务的配置功能。
服务.js我使用 API 进行所有 AJAX 调用的文件.js抽象。
这种类型的设置对我来说已经足够好了。
您可以使用gulp连接和缩小所有这些文件,只需从xCode项目中引用该文件即可。
100% 建议使用 React + Redux: http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html
我已经相对快速地使用此模板构建了几个新项目。
- 在openshift node js应用程序中获取请求
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 如何构建angular.js应用程序
- node.js应用程序中的async.js问题
- 使用connect vhost为多个express.js应用程序提供服务
- 在node.js应用程序中接收JMS消息
- JS应用程序中基于DOM的XSS保护
- Express.js应用程序最大CPU
- Node.js应用程序-由NPM启动时的不同Node_ENV
- 如何将现有的angular js应用程序集成到Laravel 5中
- React js应用程序's在托管应用程序中打开时将覆盖css样式
- angular js应用程序不工作
- 使用Sails.JS为静态HTML/JS应用程序提供身份验证
- 如何计算angular JS应用程序(单页应用程序)的页面加载时间
- 使用Q节点模块时,Bluemix node.js应用程序部署失败
- Heroku类型的简单HTML/JS应用程序托管
- 通过SSL/TLS连接访问Vagrant上的Node.js应用程序
- 在Backbone.js应用程序中使用lodash而不是下划线
- fs.readFileSync()在express js应用程序中失败
- 在Chrome和Safari中启动Angular JS应用程序的差异