小编ehy*_*nds的帖子

你如何在整个网站上组织大型JS/jQuery代码库?

你如何在整个网站上组织大型JS/jQuery代码库?关于如何组织代码片段有很多很好的资源,但没有真正关于如何将它们整合在一起并使每个部分适合到位:侧面广泛的代码组织,使用相同代码的多个页面,保持松散耦合的DRY,等等

以下是我如何处理它.我从来都不习惯像这样组织我的代码,因为我认为它很草率并且可能导致可维护性/扩展问题,但我真的不知道更好.

我意识到我每个人都有他们自己的要求,而且没有交钥匙的解决方案,但我很想听到一些关于我做错了什么的意见,为什么我做错了,以及如何写更多的建议可维护的代码.

我认为我真正想要的是:

  1. 您如何处理需要在多个页面,多个页面上使用的逻辑?

  2. 你如何组织特定于页面的代码?将每个页面命名为一个全局对象是一个好主意吗?1.

  3. 您从一开始就做了什么,以确保随着您的应用变得越来越大,您不会不断重写您的组织模式?我可能在第四次迭代写这个东西.

每个页面都会收到主application.js文件.每个附加页面都有自己的application.pagename.js文件.我使用服务器端逻辑来包含文件(首先检查页面是否存在 - 某些页面不需要JS),然后按顺序初始化它们.

所以我的主页看起来像:

<script src="js/application.js"></script>
<script src="js/application.index.js"></script>
<script>
    MyApp.init();
    MyApp.index.init();
</script>
Run Code Online (Sandbox Code Playgroud)

我的URL约定是/ page/subpage/id /.我有大约10页和一大堆子页面,每个子页面都需要自己的逻辑.看这篇文章的最后一个例子.

我的大多数代码已经模块化为jQuery UI小部件或jQuery插件,所以我要说这些文件中75%的代码都需要()来创建一个小部件并启动它.

我根据需要使用requireJS来拉入小部件.

// application.js
var MyApp = {
    init: function(){
        var self = this;

        // these widgets are available on every single page
        // notice the call to jquery.deparam.js - i'll use this later to init subpage logic.
        require(['js/widget1.js', 'js/widget2.js', 'js/widget3.js', 'js/jquery.deparam.js'], function(){

            // deparam the query string.  I'll use this later.
            self.querystring = $.deparam.querystring();

            // init …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

42
推荐指数
1
解决办法
5956
查看次数

iTunes跨平台IAP订阅 - Netflix如何做到这一点?

我正在创建一项服务,允许用户在任意数量的设备(网络,Android,Roku,iOS,Apple TV)上注册,然后购买每月订阅以观看视频内容.订阅提供对整个目录的访问.我有自己的订阅管理API在服务器上运行,我想利用它作为事实的来源,这样用户可以在iPad上购买订阅,登录Roku上的应用程序,并继续观看他们中断的位置.

基本上,Netflix.

据我所知,以下是我的选择:

  1. 自动续订订阅:这是Netflix今天使用的,但Apple不会在其支付平台周围提供API或任何一组webhook,因此我不知道该选项如何工作.我的后端服务不知道Apple每个月会自动续订订阅,或者用户是否取消订阅.

  2. 非续订订阅:用户通过IAP在应用内购买订阅.购买完成后,应用程序同步订阅我的后端系统.只要需要进行权利检查,应用程序就会与我的后端接口.当用户的订阅即将到期时,应用程序必须再次显示购买工作流程.

  3. 导入iTunes报告:无法正常工作,因为它不是实时的(拉,不推),也没有告诉我有关取消订阅的任何信息.我只能生成新订阅者的报告.

  4. 收据验证和推送收据到我的服务:将无法工作,因为它取决于用户实际使用我的应用程序.理论上,用户可以在我的应用程序中订阅,切换到Roku,永远不会再打开它.

  5. 完全跳过IAP并要求用户通过网络订阅.

我错过了什么吗?我很好奇Netflix是如何解决这个问题的.

itunes subscriptions in-app-purchase ios

18
推荐指数
2
解决办法
3828
查看次数

Node.js和Express会话问题

我遇到了会话问题,有时我设置的会话变量在下一页请求时未定义.我通常必须再次检查流程才能正确设置变量.

我可以确认我没有尝试将会话变量设置为undefined; 他们有合法的价值.

在我的应用程序中,用户从/ twitter/connect /移动到/ twitter/callback /.前者从twitter中检索了一些oauth数据,后者将用户记录到twitter中.

/ twitter/connect /很简单:

app.get('/twitter/connect/?', function(req, res){
    consumer().getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret, results){
        if (error){
            // error handling here
        } else {
            req.session.oauthRequestToken = oauthToken;
            req.session.oauthRequestTokenSecret = oauthTokenSecret;

            // if I console.log the two session variables above
            // they have the proper values.

            res.redirect("https://twitter.com/oauth/authorize?oauth_token="+req.session.oauthRequestToken);      
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

之后,Twitter将它们发送回/ twitter/callback /:

app.get('/twitter/callback/?', function(req, res){
    console.log(req.session.oauthRequestToken);
    console.log(req.session.oauthRequestTokenSecret);

    // more often than not, the two variables above are
    // undefined.  but not always.  usually on the …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

13
推荐指数
2
解决办法
2万
查看次数