小编bra*_*sch的帖子

在客户端JavaScript中访问Express.js局部变量

好奇,如果我这样做,如果不是你们怎么会这样做.

我有一个Jade模板需要呈现从MongoDB数据库中检索的一些数据,我还需要在客户端JavaScript文件中访问该数据.

我正在使用Express.js并将数据发送到Jade模板,如下所示:

var myMongoDbObject = {name : 'stephen'};
res.render('home', { locals: { data : myMongoDbObject } });
Run Code Online (Sandbox Code Playgroud)

然后在home.jade里面,我可以做以下事情:

p Hello #{data.name}!
Run Code Online (Sandbox Code Playgroud)

写出:

Hello stephen!
Run Code Online (Sandbox Code Playgroud)

现在我想要的是也可以访问客户端JS文件中的这个数据对象,这样我就可以在按下按钮之前操作对象,然后再将其发回服务器以更新数据库.

我已经能够通过将"data"对象保存在Jade模板中的隐藏输入字段内,然后在我的客户端JS文件中获取该字段的值来实现此目的.

在home.jade里面

- local_data = JSON.stringify(data) // data coming in from Express.js
input(type='hidden', value=local_data)#myLocalDataObj
Run Code Online (Sandbox Code Playgroud)

然后在我的客户端JS文件中,我可以像这样访问local_data:

在myLocalFile.js中

var localObj = JSON.parse($("#myLocalDataObj").val());
console.log(localObj.name);
Run Code Online (Sandbox Code Playgroud)

然而,这个字符串化/解析业务感觉很乱.我知道我可以将我的数据对象的值绑定到我的Jade模板中的DOM对象,然后使用jQuery获取这些值,但是我想要访问从客户端JS中的Express返回的实际Object.

我的解决方案是否是最佳的,您将如何实现这一目标?

javascript node.js express pug

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

如何在Unix中获取登录用户的真实姓名?

我正在寻找登录用户的真实(全名),以避免在我正在建立的应用程序中提示它.我看到finger命令会输出一个包含此列表的圆柱列表数据,并且想知道grep是否有意义或是否有更简单的方法?我发现的手指开关都没有输出真实姓名.任何想法将不胜感激.

unix

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

Git Stash&Worktree Woes

我有时间让git与我的用户定义的工作树合作,该工作树存在包含我的.git目录的文件夹之外.

基本上设置是这样的:我有两个目录,一个名为"git-worktree",其中包含我想要跟踪的文件,另一个名为"git-dir",其中包含存储库的.git文件夹,即GIT_DIR.

我通过cd进入文件夹"git-dir"并运行:

git --git-dir=./.git --work-tree=/Users/braitsch/Test/git-worktree/ init
Run Code Online (Sandbox Code Playgroud)

这成功初始化了存储库,当我在"git-dir"文件夹中时,我可以添加工作树中的文件,运行git status并提交它们.凉.

当我尝试运行git stash时,这里出现了踢球,这让我误以为:

fatal: /usr/local/git/libexec/git-core/git-stash cannot be used without a working tree.
Run Code Online (Sandbox Code Playgroud)

现在这是BS,因为我知道(或者至少我认为)我将工作树设置为包含我想要跟踪的文件的"git-worktree"文件夹.

git config --local -l向我展示了以下内容:

core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.worktree=/Users/braitsch/Test/git-worktree
core.ignorecase=true
Run Code Online (Sandbox Code Playgroud)

我甚至尝试手动将.git文件夹添加到本地配置文件,看看是否有帮助,但无济于事.

core.gitdir=/Users/braitsch/Test/git-dir/.git
Run Code Online (Sandbox Code Playgroud)

现在来这里是踢球者.如果我将工作树设置为git-dir的父目录,那么 Git stash将起作用.例如,如果我将工作设置为说出我的主目录.

core.worktree=/Users/braitsch/
Run Code Online (Sandbox Code Playgroud)

所以我给你们的问题是我错过了什么设置告诉git允许我的工作树存在于文件系统的任何地方,而不仅仅是沿着git-dir的父路径返回到根目录?当然必须有一种方法可以将你的git-dir和你的工作树放在你想要的任何地方,然后告诉git他们有什么工作吗?非常感谢阅读.任何见解都将得到慷慨的赞赏.

git git-stash

8
推荐指数
1
解决办法
3059
查看次数

git-stash无法找到工作树

我正在尝试通过以下方式设置一个带有手动定义的工作树的git存储库:

cd /Users/braitsch/repos/project1
git --git-dir=. --work-tree=/Users/braitsch/projects/project1 init
Run Code Online (Sandbox Code Playgroud)

运行上面后我可以通过以下方式添加位于"/ Users/braitsch/projects/project1"中的文件
:git add somefile或git add.
提交工作正常,因为调用"git branch"

但是,git stash list抛出以下错误:

致命的:/usr/local/Cellar/git/1.7.4.4/libexec/git-core/git-stash不能在没有工作树的情况下使用.

用户定义的工作树中是否不支持存储?

git config --local core.worktree
echoes out : /Users/braitsch/projects/project1
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激!

-------- --------更新

正如@jleedev在下面提到的那样,尝试从工作树外部调用"git stash"时似乎存在一个错误.但是我的解决方法是只需cd进入工作树,然后首先在gitdir的路径前面调用stash.不方便,我知道但是以下是stash命令的工作原理:

git --git-dir="projects/proj1/.git" stash list
Run Code Online (Sandbox Code Playgroud)

这个问题似乎没有困扰其他股票命令,如添加,提交,分支等.就我所知,只是"藏匿".

如果您希望摆脱将.git文件夹嵌套在工作树中的默认结构,您可能会发现以下步骤很有用:

  1. 创建一个您想要存储git存储库的目录
  2. 创建一个您希望保留要跟踪的文件的目录(这些文件可以在您的文件系统的任何位置)
  3. cd进入你的git repository文件夹并运行:

      git --git-dir=. --work-tree="path-to-your-project-folder" init
    
    Run Code Online (Sandbox Code Playgroud)

    这将初始化一个新的存储库并将其链接到您的外部工作树文件夹.

要运行标准的添加,删除,分支,提交命令,cd进入你的git存储库并像往常一样运行你的命令.但是,要运行存储,请确保进入您的工作树,然后运行存储,如上所述,使用gitdir的路径前面命令.

git git-stash

7
推荐指数
1
解决办法
4861
查看次数

设置自定义Git安装

我想在一个自定义位置安装Git,该位置不同于http://git-scm.com/网站安装usr/local/git/bin/git的软件包安装程序的默认目录.

例如,我只是尝试复制usr/local/gitto 的内容/Users/braitsch/my-git并更新我的路径变量/Users/braitsch/my-git/bin,现在Git不高兴说它无法找到它的一些命令,如git -stash.

我也尝试过设置,./git exec-path=/Users/braitsch/my-git/libexec/git-core但似乎没有采取.

所以我的问题是你们如何在不使用软件包管理器或预先构建的安装程序的情况下设置Git的自定义安装?我很想找到一个可以在Mac和Windows上轻松使用的场景.提前致谢.

- 更新 -

如果将usr/local/git通过软件包安装程序安装的目录移动到另一个位置,Git stash(以及可能的其他命令)将会失败.有没有人对如何解决这个问题有任何建议?我正在尝试从自定义位置运行Git,但看起来这是不可能通过http://git-scm.com网站上的构建?

git

7
推荐指数
1
解决办法
5521
查看次数

使用JavaScript在其中心周围旋转三角形

星期五晚了,我在这个问题上摸不着头脑.

我试图绘制一个等边三角形并围绕它的中心旋转但由于某种原因我无法确定它的中心点.

这是一个JSFiddle,你可以看到我如何转换到画布的中心,然后使用等式从那里绘制三角形:

var width = 30;
var height = width * (Math.sqrt(3)/2);
Run Code Online (Sandbox Code Playgroud)

确定宽度/高度的比例.

我在这里错过了什么?任何想法都将非常感激.

javascript html5 geometry canvas

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

使用 sudo 时通过对话框窗口提示用户输入密码

我需要使用 sudo 执行命令,并希望显示一个对话框窗口供用户输入其凭据。尝试使用 Applescript 自定义提示简直令人痛苦,并且使用内置的“以管理员权限执行 shell 脚本”不允许自定义窗口,因此用户知道请求来自何处。

当然,有一种方法可以显示一个窗口,让用户输入他们的凭据并将值发送回 sudo 以执行命令?cocoasudo看起来很有前途,但它也在提示窗口中写了“cocoasudo”,我需要用我的应用程序名称替换它。有没有人找到实现这种功能的解决方案?

unix applescript sudo gksudo

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

带有Express.js vhost的子域上的Socket.IO

我的服务器上运行了两个Express.js应用程序.

一个名为"main-app"的普通香草应用程序,另一个使用名为"socket-app"的Socket.IO.

我在"socket.mydomain.com"的子域上运行的"mydomain.com"和"socket-app"上运行"main-app"

我通过Express的内置vhost中间件将请求路由到socket-app.

- 在main-app.js里面 -

var express = require('express');
var app = module.exports = express.createServer();
app.use(express.vhost('socket.mydomain', require('./socket-app/app.js')));

app.listen(8080, function(){
  console.log("Express server listening on port %d in %s mode");
});
Run Code Online (Sandbox Code Playgroud)

这工作正常,我可以在socket.mydomain上看到我的socket-app在端口8080上运行

但是,如此处所讨论的,当通过vhost运行Socket.IO应用程序时,websockets超时并且没有收到"升级"事件似乎存在问题.

所以我的问题是如何将这个"升级"事件从我的主应用程序传输到我的socket应用程序,以便所有连接的套接字都可以听到有人连接和断开连接?

我尝试从"主应用程序"中发出"升级"事件,但它似乎没有起作用.

app.on('upgrade', function(req, socket) {
    socket.emit('upgrade', app);    
});
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

connect node.js express socket.io

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

使Express.js中的特定目录可浏览

我有一个目录,其中包含一些我想在浏览器中查看的图像.

该目录位于我的服务器/ public/images上

内部/公共我还有其他目录,我不想公开,因此使整个/公共目录可见不是解决方案.

如何使用connect目录中间件使我的/ public/images可浏览?

使用此处描述的解决方案使所有内容都可以在/ public中查看,并且尝试以下操作不起作用:

    app.use(exp.static(__dirname + '/public'));
    app.use(exp.static(__dirname + '/public/images'));
    app.use(exp.directory(__dirname + '/public/images'));
Run Code Online (Sandbox Code Playgroud)

谢谢

javascript connect node.js express

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