问题列表 - 第26387页

在单页应用上管理JavaScript的最佳实践

使用单页面应用程序,我更改哈希值并加载并仅更改页面内容,我正在尝试决定如何管理每个"页面"可能需要的JavaScript.

我已经有一个历史模块监视可能看起来的位置哈希domain.com/#/company/about,以及一个将使用XHR获取内容并将其插入内容区域的Page类.

function onHashChange(hash) {
    var skipCache = false;
    if(hash in noCacheList) {
        skipCache = true;
    } 
    new Page(hash, skipCache).insert();
}


// Page.js
var _pageCache = {};
function Page(url, skipCache) {

    if(!skipCache && (url in _pageCache)) {
        return _pageCache[url];
    }
    this.url = url;
    this.load();

}
Run Code Online (Sandbox Code Playgroud)

缓存应该允许已加载的页面跳过XHR.我还将内容存储到documentFragment中,然后在插入新内容时将当前内容从文档中拉出来Page,因此浏览器只需要为片段构建一次DOM.

如果页面具有时间敏感数据,则可能需要跳过高速缓存.

以下是我需要帮助决定的内容:加载的任何页面很可能都有一些自己的JavaScript来控制页面.就像页面将使用Tabs一样,需要幻灯片放映,有某种动画,有ajax形式,或者有什么.

将JavaScript加载到页面的最佳方法是什么?在我从XHR返回的documentFragment中包含脚本标记?如果我需要跳过缓存并重新下载片段,该怎么办?我觉得第二次调用的完全相同的JavaScript可能会导致冲突,比如重新声明相同的变量.

更好的方法是在抓取新脚本时将脚本附加到头部Page?这将要求原始页面知道每个其他页面可能需要的所有资产.

除了知道包含所有内容的最佳方法之外,我不需要担心内存管理,以及将这么多不同的JavaScript位加载到单个页面实例中的可能泄漏吗?

javascript ajax singlepage

5
推荐指数
1
解决办法
2258
查看次数

JQuery - 扩展和访问超类

有没有办法在使用$ .extend扩展对象时访问超级对象?

我想扩展一个对象,覆盖一个方法,但在子类方法中调用重写的超类方法.

javascript jquery

9
推荐指数
1
解决办法
9363
查看次数

.NET Task实例在运行期间是否超出范围?

如果我在方法中使用以下代码块(使用.NET 4和任务并行库):

var task = new Task(() => DoSomethingLongRunning());
task.Start();
Run Code Online (Sandbox Code Playgroud)

并且该方法返回,该任务是否超出范围并被垃圾收集,或者它将运行完成?我没有注意到GCing的任何问题,但是我想确保我没有为GC设置竞争条件.

.net c# garbage-collection task task-parallel-library

42
推荐指数
2
解决办法
8587
查看次数

在线CSS优化器?

是否存在与Googles JavaScript Closure Optimizer等效的在线CSS优化器.

我在网上发现了很多CSS 压缩器,但我正在寻找一个CSS 优化器 ...它实际上删除了冗余/冲突的属性

html css optimization

3
推荐指数
1
解决办法
1118
查看次数

如何使用字符串文字创建NSArray?

我正在尝试使用一组字符串文字创建一个NSArray,但是我收到编译错误"Initializer element is not constant".

NSArray *currencies = [NSArray arrayWithObjects:@"Dollar", @"Euro", @"Pound", nil];
Run Code Online (Sandbox Code Playgroud)

有人可以指出我做错了什么,并可能解释错误信息?

iphone macos objective-c

30
推荐指数
3
解决办法
5万
查看次数

按属性排序XML文件

我有以下XML代码:

<Group>
    <GElement code="x">
        <Group>
            <GElement code="x">
                <fname>a</fname>
                <lname>b</lname>
            </GElement>
            <GElement code ="f">
                <fname>fa</fname>
            </GElement>
        </Group>
    </GElement>
    <GElement code ="f">
    </GElement>
</Group>
Run Code Online (Sandbox Code Playgroud)

我希望输出按"代码"排序,如:

<Group>
    <GElement code ="f">
    </GElement>
    <GElement code="x">
        <Group>
            <GElement code ="f">
                <fname>fa</fname>
            </GElement>
            <GElement code="x">
                <fname>a</fname>
                <lname>b</lname>
            </GElement>
        </Group>
    </GElement>
</Group>
Run Code Online (Sandbox Code Playgroud)

树的深度可以是无穷无尽的,即GElement可以有另一个Group等等.

有任何想法吗?

.net c# xml sorting

3
推荐指数
1
解决办法
703
查看次数

为什么我不能用一个未命名的临时构造一个std :: istream_iterator?

g ++允许从ifstream实例构造istream_iterator:

std::ifstream ifstr("test.txt");
std::istream_iterator<std::string> iter1(ifstr);
Run Code Online (Sandbox Code Playgroud)

...但它不允许使用未命名的临时构造:

std::istream_iterator<std::string> iter2(std::ifstream("test.txt"));
Run Code Online (Sandbox Code Playgroud)

这给出了:

错误:没有用于调用'std :: istream_iterator,ptrdiff_t> :: istream_iterator(std :: ifstream)'的匹配函数

有谁知道为什么这不起作用?- 谢谢!

c++ constructor istream-iterator

2
推荐指数
1
解决办法
449
查看次数

如何捕捉无意识的功能插入?

通过我的书" 专家C编程",我看到了关于功能插入的章节,以及如果无意中发生了如何导致一些严重的难以发现的错误.

书中给出的例子如下:

my_source.c

mktemp() { ... }

main() {
  mktemp();
  getwd();
}
Run Code Online (Sandbox Code Playgroud)

的libc

mktemp(){ ... }
getwd(){ ...; mktemp(); ... }
Run Code Online (Sandbox Code Playgroud)

根据这本书,发生的事情main()mktemp()(标准C库函数)被my_source.c中的实现插入.虽然main()调用我的实现mktemp()是预期的行为,但是getwd()(另一个C库函数)调用我的实现mktemp()不是.

显然,这个例子是SunOS 4.0.3版本中存在的真实生活中的错误lpr.该书接着解释修复是将关键字添加static到定义mktemp()my_source.c ; 虽然改名完全应该也解决了这个问题.

本章给我留下了一些未解决的问题,希望你们能回答:

  1. GCC是否有办法警告功能干预?我们当然不会打算发生这种情况,如果有的话,我想知道它.
  2. 我们的软件组是否应该采用将关键字static放在我们不希望暴露的所有功能之前的做法?
  3. 可以用静态库引入的函数进行插入吗?

谢谢您的帮助.

编辑

我应该注意到,我的问题不仅仅是针对插入标准C库函数,还包括其他库中的函数,可能是第三方,也许是内部创建的.本质上,我想捕捉任何插入的实例,无论插入的函数在哪里.

c linker gcc function-interposition

6
推荐指数
1
解决办法
1065
查看次数

共享内存中的条件变量 - 此代码是否符合POSIX标准?

POSIX标准是否允许命名共享内存块包含互斥锁和条件变量?

我们一直在尝试使用互斥和条件变量来同步对LynuxWorks LynxOS-SE系统(POSIX-conformant)上的两个进程对命名共享内存的访问.

调用一个共享内存块"/sync"并包含互斥锁和条件变量,另一个是"/data"并包含我们同步访问的实际数据.

pthread_cond_signal()如果两个进程都没有mmap()完全相同的顺序执行调用,或者如果一个进程在映射内存之前在某个其他共享内存中进行mmaps,我们就会看到失败"/sync".

这个示例代码与我可以做的一样短:

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/file.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
#include <iostream>
#include <string>
using namespace std;

static const string shm_name_sync("/sync");
static const string shm_name_data("/data");

struct shared_memory_sync
{
    pthread_mutex_t mutex;
    pthread_cond_t condition;
};

struct shared_memory_data
{
    int a;
    int b;
};


//Create 2 shared memory objects
// - sync contains 2 shared synchronisation …
Run Code Online (Sandbox Code Playgroud)

unix posix ipc shared-memory lynxos

5
推荐指数
2
解决办法
9268
查看次数

Java:迭代列表列表?

问题,但在C#.那么Java有C#的命令吗?我需要它用于Matches-SearchTerm-Files-relationship.

foreach(var i in BunchOfItems.SelectMany(k => k.Items)) {}
Run Code Online (Sandbox Code Playgroud)

[为什么不for循环?] 我已经在嵌套for循环中完成了这样的结构,但它们很快变得臃肿.所以我更喜欢像上面这样的更多傻瓜.

public static Stack<Integer[]> getPrintPoss(String s,File f,Integer maxViewPerF)
{
    Stack<File> possPrint = new Stack<File>();
    Integer[] poss = new Integer[4]();
    int u,size;
    for(File f:files)
    { 
        size = f2S(f).length();
        u = Math.min(maxViewsPerF,size);
        for(int i=0; i<u;i++)
        {
           // Do something --- bloated, and soon out of control
           // wants more succintly

        }
    }
    return possPrint;
}
Run Code Online (Sandbox Code Playgroud)

java iteration list

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