小编Mou*_*eer的帖子

如何通过innerText获取元素

如果我知道文本标签包含什么,如何在html页面中获取标签.例如:

<a ...>SearchingText</a>
Run Code Online (Sandbox Code Playgroud)

javascript jquery innertext

114
推荐指数
12
解决办法
14万
查看次数

字符串和标签的本地化和全球化的最佳实践

我是一个拥有20多名开发人员的团队成员.每个开发人员都在一个单独的模块上工作(接近10个模块).在每个模块中,我们可能至少有50个CRUD表单,这意味着我们目前有近500个添加按钮,保存按钮,编辑按钮等.

但是,因为我们想要使我们的应用程序全球化,所以我们需要能够在我们的应用程序中翻译文本.例如,无处不在,单词add应该成为法国用户的焦点.

我们到目前为止所做的是,对于UI或表示层中的每个视图,我们都有一个关键/值对翻译的字典.然后在渲染视图时,我们使用此字典翻译所需的文本和字符串.然而,这种方法,我们已经有500 个字典附近的500个添加.这意味着我们已经违反了DRY委托人.

另一方面,如果我们集中常见的字符串,比如将add添加到一个地方,并要求开发人员在任何地方使用它,我们就会遇到不确定字符串是否已经在集中式字典中定义的问题.

另一个选择可能是没有翻译词典并使用谷歌翻译,Bing翻译等在线翻译服务.

我们遇到的另一个问题是,一些处于准时交付项目压力下的开发人员无法记住翻译密钥.例如,对于添加按钮的文本,开发人员使用了add,而另一个开发人员使用了new,等等.

什么是应用程序的字符串资源的全球化和本地化的最佳实践或最着名的方法?

javascript globalization translation localization client-side

111
推荐指数
3
解决办法
12万
查看次数

如何创建RXjs重试时有延迟和限制尝试

我正在尝试进行API调用(使用angular4),它在失败时重试,使用retryWhen.我希望它延迟500毫秒,然后再次重试.这可以通过以下代码实现:

loadSomething(): Observable<SomeInterface> {
  return this.http.get(this.someEndpoint, commonHttpHeaders())
    .retryWhen(errors => errors.delay(500));
}
Run Code Online (Sandbox Code Playgroud)

但这将永远尝试.我怎么限制它,比方说10次?

谢谢!

observable rxjs angular

24
推荐指数
1
解决办法
1万
查看次数

在eval期间移动偏移(使用sourcemap)

我正在从文件加载脚本,我正在使用eval()这样生成一个Javascript代码:

var code = fs.readFileSync('myfile');
var shiftedCode= 'function(param) {' + code + '}\n'+ '//# sourceURL=myfile';
eval(shiftedCode)
Run Code Online (Sandbox Code Playgroud)

问题是当我在代码中放置一个断点或调试器时,它会在正确的一行之后停止两行,因为我想在开头添加了字符.

有没有办法转移sourceURL到正确的起点可能是使用源图?

预先感谢您的帮助.

javascript node.js source-maps

12
推荐指数
2
解决办法
461
查看次数

如何取消订阅路径解析类中的可观察对象

在ngOnDestroy方法中,我取消订阅我订阅的一个observable,否则代码被多次执行...

ngOnInit()
{
    this.sub = this.route.params.subscribe(params => 
    {
        this.projectId = +params['id'];
        this.projectStore.project = this.projectId;

        // load data when the route changes
        this._tasksService.gettasks(this.projectId).subscribe(years => { this.tasks = years.map(y => new task(y)) }); // no need to clean up the subscription

    });
    // load data when the component is initialized
    this._tasksService.gettasks(this.projectId).subscribe(years => { this.tasks = years.map(y => new task(y)) }); // no need to clean up the subscription

}

ngOnDestroy()
{
    this.sub.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)

现在我想把它放在路由器解析类中,但是没有ngOnDestroy - 当然 - 只是一个我再次订阅的NavigationEnd事件.

这意味着我订阅了一个NavigationStart事件(当我离开路线时发生)以取消订阅另一个订阅,这是路由参数更改订阅HAHAHA ...

我想这不是可行的方法,但谷歌什么也没提供.

任何人都知道如何处理这种情况?或者应该路由params更改订阅真的只属于一个组件? …

angular2-routing angular

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

Expressjs身份验证

我有一些关于登录和会话的问题.我有这个代码:

db查询:

login: function(req,callback) {
    var query = 'SELECT id FROM users WHERE email = "' + req.body.email_login + '" AND password = "' + hashlib.sha1(req.body.password_login) + '" LIMIT 1';
    client.query(query, callback);
}
Run Code Online (Sandbox Code Playgroud)

路线:

app.post('/login', function(req, res, next) {

    users.login(req,function(err, results) {
        if (err) {
            res.render('index');
        } else if (results[0]) {
            req.session.userdata = results[0];
                req.session.is_logged_in = true;
                res.render('site/news');
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

Auth中间件:

var auth = function (req, res, next) {
    if (req.session.userdata && req.session.is_logged_in === true) {
        next();
    } else …
Run Code Online (Sandbox Code Playgroud)

javascript authentication node.js express

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