AngularJs with Ionic, Cordova, Node.js, views and other 'static' 文件



全面披露,对Angular和Ionic来说是全新的,我正在尝试从概念上理解它,并了解最佳实践,这样我就不会再遇到麻烦了。

我已经构建了基于vanilla html/css/js的网站和应用程序,并为应用程序UI提供了node.js后端和jquery mobile。

在那些需要web服务/后端的情况下,我主要使用.ejs文件和部分视图,并使用res.render响应(动态地将数据传递到视图中)为它们提供服务,比如。。。

    app.get('/showallcustomers', function(req, res){
        db.connect("SELECT * from customers", [], function(result, error){
             var data = result.rows;
             res.render('pages/showall', {data:data})      
        });
    });

同时将S3用于我的静态JS/CSS/Images等,以减轻node.JS web服务上关于静态资源的负载。

通过ajax发出的其他请求只需从node.js服务器发送/接收json即可。

现在,有了angular js和关注点的分离,视图与控制器和数据分离,我正试图找出"托管"或服务于我的视图和控制器的最佳位置。

在与cordova捆绑的应用程序的情况下,我可以很容易地将所有这些角度视图/控制器保留在应用程序的根www文件夹中,并将它们与应用程序打包(有点像jQuery mobile的巨大"页面"驱动的index.html文件),但我是否可以使用类似S3的cdn来处理我的"静态"文件,如angular view.html文件和controller.js文件?或者甚至是更传统的静态文件的网络托管类型设置?

然后,我可以(大概是?)(使用$http模块)将我的站点/应用程序的"数据"流限制为mysite.com/api类型设置?类似于:

app.config(function($routeProvider){
        $routeProvider
            .when('/',{
                controller: 'customersController',
                templateUrl: 'app/views/customers.html'
            })

在控制器中,类似于。。。

$http.get('api/customers');

但是,如果是这种情况,并且我以这种方式提供静态文件,routeProvider如何知道在哪里可以找到控制器?

这里的人们通常做什么?将静态文件与动态数据完全分离?还是把它们捆在一起?有正确的方法吗?还是我在概念上误解了什么?

假设:

  • 我对Cordova不太熟悉,但我认为它会像高级浏览器扩展一样工作
  • 我还假设您的应用程序获得了足够的流量,从而减轻服务文件的负载并不是一种过度的做法

想法:

  • 对于JS文件,绑定可能是个好主意。无论您的服务器是提供文件还是S3提供文件,它都将最大限度地减少浏览器必须进行的连接量
  • 对于JS文件,由于它们很可能通过<script>标签包含在文件中,因此您可以简单地将它们上传到S3中。这不应该给你带来太大的问题
  • 对于HTML模板文件,我相信您也可以这样做。使用RouteProviderng-include,您应该能够从S3中获取它们
  • 此外,如果您正在执行API调用,那么使用角度服务将比在控制器中使用$http模块更好

希望这些帮助。

相关内容

最新更新