网站搜索

运算符 - JavaScript 空条件表达式

可能的重复: JavaScript 的 null 合并操作符?

在 C# 中,你可以这样做:

var obj = newObject ?? defaultObject;

这就是说,如果不是 null 就将 newObject 赋值给 obj,否则赋值 defaultObject。我怎么在 JavaScript 中写这个?

答案#1

虽然这被认

阅读更多 →

javascript - XPath 表达式以源顺序选择 *所有* 元素、文本节点和注释节点

选择 所有元素、文本节点和注释节点,并按它们在文档中出现的顺序排列的 XPath 表达式是什么?

以下方法有效地选择了所有元素,但不包括文本节点和注释节点:

var result = document.evaluate('//*', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null), index = -1; while (++index < result.snapshotL

阅读更多 →

javascript - expressjs 文件上传,检查是否确实有文件被发送,指定最大文件大小并保持其名称

使用 expressjs 大约一个月后,我遇到了文件上传的问题。尽管咨询了谷歌和各种博客,我仍未找到以下三个问题的答案:

我需要做什么/我需要选择 bodyParser 的哪些设置才能:

  1. 确保确实上传了文件(当前,如果在未选择文件的情况下提交表单,会创建一个空文件)。

  2. 我可以在哪里指定文件允许的最大大小值?

  3. 我如何才能省略文件的重命名?

目前我正在用以下选项在我的 express

阅读更多 →

javascript - Backbone 和 Express 路由器可以在 Express 应用中一起工作吗?

我已经构建了几个 Backbone 应用程序,并且很欣赏客户端代码的结构和组织。我正在转向 Node 开发,使用 Express,但我不确定 Express 和 Backbone 在路由处理上如何协同工作。

答案#1

你需要明白 Node 和 Backbone 是相互独立的。

  • Node 用于服务器端(例如处理数据库、提供 API 等)。
  • Backbone 是一个客户端的 Javascript MVC 框架,它为组织你的客户端 Javascript 应用程序(浏览器中的应用程序)提供了一种结构。

你可以在客户端拥有一个 Backbone 应用程序,它可以连接到任何后端,无论是 Node、Rails、PHP 等等。

有关更多信息,请查看客户端的 MVVM 模式和 Javascript 框架。

http://backbonetutorials.com

阅读更多 →

javascript - 在 node 和 express 中的表单元素数组键

尽管我尽了最大的努力,我还是卡在了如何获取提交到 NodeJS、Express 和 Handlebars 的表单元素数组键上。

我的表单元素看起来像这样:

{{#each block}} <input type='text' name='block_payout[{{id}}]' /> {{/each}

这会在浏览器中产生以下标记:

<input type='text' name='block_payout[14]' /> <input type='text' name='block_payout[15]' />

阅读更多 →

javascript - Nodejs express cookies 未被添加

我正在尝试构建一个 Node.js 应用程序,我必须定义 cookies。这是部分代码:

var app = express(); app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.favicon()); app.use(express.cookieParser()); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); ... app.get('/', routes.indexGET); app.post('/login', routes.loginPOST);

阅读更多 →

javascript - Nginx node.js express 下载大文件在 1.08GB 停止

我有这个由 Nginx 代理的 node.js 应用(在生产环境中)。一个路由看起来像这样:

exports.download = function(req, res){ var id = req.params.id; if (id && id == 'latest') { res.download(config.items.release_directory+'/<1.6GB-file>.zip', function(err){ if (err) {

阅读更多 →

javascript - 理解错误 "SyntaxError: expected expression, got '<'"

我刚刚浪费了很多时间试图弄清楚为什么 Firefox 和 Chrome 都告诉我 SyntaxError: expected expression, got '<' 并且拒绝在我的网页上加载脚本。事实证明问题是因为我写了

<script src="static/js/common.js"></script>

而不是

<script src="/static/js/common.js"></script>

现在我完全理解为什么路径中缺少开头的斜杠会导致无法找到脚本,但得了吧,JavaScript终端肯定可以更好地给我一个错误提示。为什么不直接显示一个404 Not Found呢?

它给我这样一个误导性错误的逻辑原因是什么?也许我可以从这次经历中学到一些东西,并对我刚刚经历的那次巨大时间浪费感到好受一些。

阅读更多 →

javascript - 正则表达式语法错误

我正在动态创建一个正则表达式。

var link = "www.google.com"; var reg = '^'+link+'{1}|(?<=\s)'+link+'{1}(?=\s)|'+link+'{1}$'; console.log(reg); var result = new RegExp(reg, 'g');

我收到这个错误

Uncaught SyntaxError: Invalid regular expression: /^www.google.com{1}|(?<=s)www.google.com{1}(?=s)|www.google.

阅读更多 →

javascript - 查找 Node.js/Express.js 应用程序中的内存泄漏

我有一个 Express.js 网络应用程序,因为内存问题经常崩溃:

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

当我启动服务时,内存使用量大约是 170Mb(由 htop 报告为 RES 内存)。然后我开始向它发送请求,内存开始上升。我正在使用 memwatch 尝试追踪看起来像内存泄漏的问题,但 memwatch.HeapDiff() 报告了类似如下的信息:

{ before: { nodes: 2093729, size_bytes: 197165296, size: '188.03 mb' }, after: { nodes: 2491264, size_bytes: 232097040, size: '221.34 mb' }, ...

... 我了解到该应用程序的堆使用量

阅读更多 →