javascript-Aurelia多个页面中的多个应用程序
作者:互联网
我正在开发使用PHP(Phalcon),MySQL& jQuery的.它不是基于API的,尽管有些方面可以使用API.堆栈中的日期过短是由于该项目是几年前首次原型化的事实,由于我不会厌烦您的原因,进入生产开发阶段需要花费数年的时间.
我意识到去年硬页面重新加载是如此,但是在导航到具有不同用途的不同部分时,在这种规模的应用程序中它们也是有意义的.目前,它可以正常工作,一旦进入某个部分,它的行为就像是使用哈希URL和ajax更改一个或多个容器等中内容的单页应用程序,尤其是在SEO没问题的情况下.目前,这一切都是通过JQuery完成的,JQuery开始变得有些混乱和难以维护.导航栏中的通知等功能也出现在网站的每个页面上,并再次通过ajax更新和显示.
我的专长是PHP.不能说相同的JavaScript!但是很明显,仅JQuery是不够的.我需要一个JS框架来处理模板/绑定,具有合理深度的本地路由和带有MV的http等.结构以更好地组织JS方面并保持其可维护性.当我发现Angular 2即将带来重大突破时,我就非常不喜欢Angular 1,并退出学习它.我尝试了Angular 2 beta,尽管更好,但它并没有使我的船浮起.我以前偶然发现过Aurelia Alpha,虽然我没有机会玩它,观看视频并阅读有关内容,但看起来却非常不错-语法不错,专为现在和将来而设计,以此类推.现在,在第1版beta中,有更多文档和资源可供学习,我很早就开始使用并在此项目中使用它,这让我感到相当自在.
我非常了解Aurelia可以做什么,并且我需要学习很多东西.但是,目前我最大的绊脚石是弄清楚如何构造它并将其合并到该项目中.
积分
>该网站的每个部分将需要不同的Aurelia应用
>每页可能需要多个Aurelia应用
>所有页面上都需要一些Aurelia应用
我发现article by Patrick Walters似乎可以解释如何通过在元素上调用应用程序来命名该应用程序;
< body aurelia-app =“ main” start =“ app”>
然后使用以下命令设置共享的main.js:
aurelia.start().then(a => {
let start = a.host.attributes.start.value;
a.setRoot(start);
});
这似乎很有意义,所以我尝试了一下,但是将调用放置在div中而不是主体中.由于主机无法解析为任何东西,因此这是行不通的(我的IDE告诉我,甚至在运行它之前).我们在这里不需要主机名/端口信息,所以我想作者是用元素替换host的方法吗?但是到底如何呢?
像这样的集成方面的任何进一步建议将不胜感激.
我已经在SO上看到了类似问题的答案,但是它们似乎并没有重用main.js,而是将其复制了,这似乎不正确.
结构体
我试着用src将文件移动到子目录中,以将事情分解为清晰的结构.我可以使之起作用的唯一方法是在配置中为每个添加一个命名路径,例如“ welcome *”:“ dist / welcome / welcome *”,那是最好/唯一的方法吗?
解决方法:
我认为您的问题没有正确的答案.只有您有能力决定哪种策略更适合您的情况.据我所知,您可以使用Aurelia实现此策略.但是,我不确定main.js的重用.
您可以使用以下命令在特定标签内加载aurelia应用:
aurelia.start().then(() => aurelia.setRoot('my-root', document.getElementById('some-element'));
如果要在同一页面中加载多个应用程序,则需要2个main.js文件.这个线程Multiple Aurelia apps on one page在同一页面上有两个应用程序的非常有用的示例.
以我的理解,共享同一页面的应用程序应具有一个项目结构,这意味着仅一个config.js,src文件夹,dist文件夹等.不共享同一页面的应用程序应具有不同的项目结构和不同的项目结构config.js,src文件夹,dist文件夹(如果需要,可以使用其他Aurelia版本).这样可以保证一个应用程序与另一个应用程序的独立性,从而防止重大更改.
当然,那只是我的意见.您可以等待aurelia家伙提供进一步的说明,他们一直在附近.
希望这可以帮助!
标签:aurelia,javascript 来源: https://codeday.me/bug/20191027/1943326.html