<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6</id>
	<title>Node.js：Express 框架 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6"/>
	<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;action=history"/>
	<updated>2026-05-15T15:48:04Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=6446&amp;oldid=prev</id>
		<title>2023年3月31日 (五) 13:17 Eijux</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=6446&amp;oldid=prev"/>
		<updated>2023-03-31T13:17:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2023年3月31日 (五) 21:17的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[category:Node.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;js&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[category:Node.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;js教程&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 关于 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 关于 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4160&amp;oldid=prev</id>
		<title>Eijux：​/* 相关资料 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4160&amp;oldid=prev"/>
		<updated>2021-05-31T13:05:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;相关资料&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年5月31日 (一) 21:05的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l484&quot;&gt;第484行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第484行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 相关资料 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 相关资料 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://expressjs.com/ &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Express官网&lt;/del&gt;]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://expressjs.com/ &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Express 官网&lt;/ins&gt;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://expressjs.com/zh-cn/4x/api.html &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Express4&lt;/del&gt;.x API]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://expressjs.com/zh-cn/4x/api.html &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Express 4&lt;/ins&gt;.x API]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://www.runoob.com/w3cnote/express-4-x-api.html &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Express4&lt;/del&gt;.x API 中文版]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://www.runoob.com/w3cnote/express-4-x-api.html &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Express 4&lt;/ins&gt;.x API 中文版]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4159&amp;oldid=prev</id>
		<title>Eijux：​/* response 对象 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4159&amp;oldid=prev"/>
		<updated>2021-05-31T13:03:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;response 对象&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年5月31日 (一) 21:03的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l151&quot;&gt;第151行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第151行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| res.'''send'''() || 传送 HTTP 响应&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| res.'''send'''() || 传送 HTTP 响应&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| res.sendFile(path [，options] [，fn]) || 传送指定路径的文件。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| res.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''&lt;/ins&gt;sendFile&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''&lt;/ins&gt;(path [，options] [，fn]) || 传送指定路径的文件。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 会自动根据文件 extension 设定 Content-Type&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 会自动根据文件 extension 设定 Content-Type&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4158&amp;oldid=prev</id>
		<title>Eijux：​/* 文件上传 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4158&amp;oldid=prev"/>
		<updated>2021-05-31T13:01:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;文件上传&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年5月31日 (一) 21:01的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l454&quot;&gt;第454行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第454行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;演示：&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;演示：&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: [[File:Node.js：Express 框架：文件上传：演示.gif|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;400px&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: [[File:Node.js：Express 框架：文件上传：演示.gif|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;600px&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Cookie 管理 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Cookie 管理 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4157&amp;oldid=prev</id>
		<title>Eijux：​/* Cookie 管理 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4157&amp;oldid=prev"/>
		<updated>2021-05-31T13:01:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cookie 管理&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年5月31日 (一) 21:01的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l481&quot;&gt;第481行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第481行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 现在你可以访问 http://127.0.0.1:8081 并查看终端信息的输出：&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 现在你可以访问 http://127.0.0.1:8081 并查看终端信息的输出：&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#: [[File:Node.js：Express 框架：Cookie 管理：演示.gif|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;400px&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#: [[File:Node.js：Express 框架：Cookie 管理：演示.gif|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;600px&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 相关资料 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 相关资料 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4156&amp;oldid=prev</id>
		<title>Eijux：​/* 静态文件 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4156&amp;oldid=prev"/>
		<updated>2021-05-31T12:56:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;静态文件&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年5月31日 (一) 20:56的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l229&quot;&gt;第229行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第229行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;例如，如果将图片， CSS, JavaScript 文件放在 public 目录下：&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;例如，如果将图片， CSS, JavaScript 文件放在 public 目录下：&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''&lt;/ins&gt;&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;app.use('/public', express.static('public'));&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;app.use('/public', express.static('public'));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;就可以到 public/images 目录下放些图片,如下所示：&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;就可以到 public/images 目录下放些图片,如下所示：&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4155&amp;oldid=prev</id>
		<title>Eijux：​建立内容为“category:Node.js  == 关于 == Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用，…”的新页面</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Node.js%EF%BC%9AExpress_%E6%A1%86%E6%9E%B6&amp;diff=4155&amp;oldid=prev"/>
		<updated>2021-05-31T12:55:01Z</updated>

		<summary type="html">&lt;p&gt;建立内容为“&lt;a href=&quot;/%E5%88%86%E7%B1%BB:Node.js&quot; title=&quot;分类:Node.js&quot;&gt;category:Node.js&lt;/a&gt;  == 关于 == Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用，…”的新页面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[category:Node.js]]&lt;br /&gt;
&lt;br /&gt;
== 关于 ==&lt;br /&gt;
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用，和丰富的 HTTP 工具。&lt;br /&gt;
&lt;br /&gt;
使用 Express 可以快速地搭建一个完整功能的网站。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Express 框架核心特性：&lt;br /&gt;
* 可以设置中间件来响应 HTTP 请求。&lt;br /&gt;
* 定义了路由表用于执行不同的 HTTP 请求动作。&lt;br /&gt;
* 可以通过向模板传递参数来动态渲染 HTML 页面。&lt;br /&gt;
&lt;br /&gt;
== 安装 Express ==&lt;br /&gt;
安装 Express 并将其保存到依赖列表中：&lt;br /&gt;
'''&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ cnpm install express --save&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;'''&lt;br /&gt;
以上命令会将 Express 框架安装在当前目录的 '''node_modules''' 目录中， node_modules 目录下会自动创建 '''express''' 目录。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下几个重要的模块是需要与 express 框架一起安装的：&lt;br /&gt;
'''&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ cnpm install body-parser --save&lt;br /&gt;
$ cnpm install cookie-parser --save&lt;br /&gt;
$ cnpm install multer --save&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;'''&lt;br /&gt;
* '''body-parser'''：node.js 中间件，用于处理 JSON, Raw, Text 和 URL 编码的数据。&lt;br /&gt;
* '''cookie-parser'''：这就是一个解析 Cookie 的工具。通过 req.cookies 可以取到传过来的 cookie，并把它们转成对象。&lt;br /&gt;
* '''multer'''：node.js 中间件，用于处理 enctype=&amp;quot;multipart/form-data&amp;quot;（设置表单的MIME编码）的表单数据。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
安装完后，我们可以查看下 express 使用的版本号：&lt;br /&gt;
'''&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ cnpm list express&lt;br /&gt;
/data/www/node&lt;br /&gt;
└── express@4.15.2  -&amp;gt; /Users/tianqixin/www/node/node_modules/.4.15.2@express&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== 第一个 Express 框架示例 ==&lt;br /&gt;
接下来我们使用 Express 框架来输出 &amp;quot;Hello World&amp;quot;。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
示例：引入 express 模块，并在客户端发起请求后，响应 &amp;quot;Hello World&amp;quot; 字符串。&lt;br /&gt;
# 创建 express_demo.js 文件：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
var express = require('express');&lt;br /&gt;
var app = express();&lt;br /&gt;
 &lt;br /&gt;
app.get('/', function (request, response) {&lt;br /&gt;
   response.send('Hello World');&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
var server = app.listen(8081, function () {&lt;br /&gt;
   var host = server.address().address&lt;br /&gt;
   var port = server.address().port&lt;br /&gt;
 &lt;br /&gt;
   console.log(&amp;quot;应用实例，访问地址为 http://%s:%s&amp;quot;, host, port)&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 执行以上代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ node express_demo.js &lt;br /&gt;
应用实例，访问地址为 http://0.0.0.0:8081&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 在浏览器中访问： http://127.0.0.1:8081 ，结果如下图所示：&lt;br /&gt;
#: [[File:Node.js：第一个 Express 框架示例.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== 请求和响应 ==&lt;br /&gt;
Express 应用使用回调函数的参数： '''request''' 和 '''response''' 对象来处理请求和响应的数据：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
app.get('/', function (request, response) {&lt;br /&gt;
   // --&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== request 对象 ===&lt;br /&gt;
Request 对象：表示 HTTP 请求，包含了：请求查询字符串，参数，内容，HTTP 头部等属性。&lt;br /&gt;
&lt;br /&gt;
常见属性有：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 命令 !! 描述 &lt;br /&gt;
|-&lt;br /&gt;
| req.app || 当 callback 为外部文件时，用 req.app 访问 express 的实例&lt;br /&gt;
|-&lt;br /&gt;
| req.baseUrl || 获取路由当前安装的 URL 路径&lt;br /&gt;
|-&lt;br /&gt;
| req.body / req.cookies || 获得「请求主体」/ Cookies&lt;br /&gt;
|-&lt;br /&gt;
| req.fresh / req.stale || 判断请求是否还「新鲜」&lt;br /&gt;
|-&lt;br /&gt;
| req.hostname / req.ip || 获取主机名和IP地址&lt;br /&gt;
|-&lt;br /&gt;
| req.originalUrl || 获取原始请求URL&lt;br /&gt;
|-&lt;br /&gt;
| req.params || 获取路由的 parameters&lt;br /&gt;
|-&lt;br /&gt;
| req.path || 获取请求路径&lt;br /&gt;
|-&lt;br /&gt;
| req.protocol || 获取协议类型&lt;br /&gt;
|-&lt;br /&gt;
| req.query || 获取 URL 的查询参数串&lt;br /&gt;
|-&lt;br /&gt;
| req.route || 获取当前匹配的路由&lt;br /&gt;
|-&lt;br /&gt;
| req.subdomains || 获取子域名&lt;br /&gt;
|-&lt;br /&gt;
| req.accepts() || 检查可接受的请求的文档类型&lt;br /&gt;
|-&lt;br /&gt;
| req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages || 返回指定字符集的第一个可接受字符编码&lt;br /&gt;
|-&lt;br /&gt;
| req.get() || 获取指定的HTTP请求头&lt;br /&gt;
|-&lt;br /&gt;
| req.is() || 判断请求头 Content-Typ e的 MIME 类型&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== response 对象 ===&lt;br /&gt;
Response 对象：对象表示 HTTP 响应，即在接收到请求时向客户端发送的 HTTP 响应数据。&lt;br /&gt;
&lt;br /&gt;
常见属性有：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 命令 !! 描述 &lt;br /&gt;
|-&lt;br /&gt;
| res.app || 同 req.app 一样&lt;br /&gt;
|-&lt;br /&gt;
| res.append() || 追加指定 HTTP 头&lt;br /&gt;
|-&lt;br /&gt;
| res.set() || 在 res.append() 后将重置之前设置的头&lt;br /&gt;
|-&lt;br /&gt;
| res.cookie(name，value [，option]) || 设置 Cookie&lt;br /&gt;
* opition：domain / expires / httpOnly / maxAge / path / secure / signed&lt;br /&gt;
|-&lt;br /&gt;
| res.clearCookie() || 清除 Cookie&lt;br /&gt;
|-&lt;br /&gt;
| res.download() || 传送指定路径的文件&lt;br /&gt;
|-&lt;br /&gt;
| res.get() || 返回指定的 HTTP 头&lt;br /&gt;
|-&lt;br /&gt;
| res.json() || 传送 JSON 响应&lt;br /&gt;
|-&lt;br /&gt;
| res.jsonp() || 传送 JSONP 响应&lt;br /&gt;
|-&lt;br /&gt;
| res.location() || 只设置响应的 Location HTTP 头，不设置状态码或者 close response&lt;br /&gt;
|-&lt;br /&gt;
| res.redirect() || 设置响应的 Location HTTP 头，并且设置状态码 302&lt;br /&gt;
|-&lt;br /&gt;
| res.render(view,[locals],callback) || 渲染一个 view，同时向 callback 传递渲染后的字符串。&lt;br /&gt;
* 如果在渲染过程中有错误发生 next(err) 将会被自动调用。&lt;br /&gt;
* callback 将会被传入一个可能发生的错误以及渲染后的页面，这样就不会自动输出了。&lt;br /&gt;
|-&lt;br /&gt;
| res.'''send'''() || 传送 HTTP 响应&lt;br /&gt;
|-&lt;br /&gt;
| res.sendFile(path [，options] [，fn]) || 传送指定路径的文件。&lt;br /&gt;
* 会自动根据文件 extension 设定 Content-Type&lt;br /&gt;
|-&lt;br /&gt;
| res.set() || 设置 HTTP 头，传入 object 可以一次设置多个头&lt;br /&gt;
|-&lt;br /&gt;
| res.status() || 设置 HTTP 状态码&lt;br /&gt;
|-&lt;br /&gt;
| res.type() || 设置 Content-Type 的 MIME 类型&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 路由 ==&lt;br /&gt;
路由决定了由谁（指定脚本）去响应客户端请求。&lt;br /&gt;
* 在 HTTP 请求中，可以通过路由提取出请求的 URL 以及 GET / POST 参数。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
示例：扩展 Hello World，添加一些功能来处理更多类型的 HTTP 请求&lt;br /&gt;
# 创建 express_demo2.js 文件：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
var express = require('express');&lt;br /&gt;
var app = express();&lt;br /&gt;
 &lt;br /&gt;
//  主页输出 &amp;quot;Hello World&amp;quot;&lt;br /&gt;
app.get('/', function (req, res) {&lt;br /&gt;
   console.log(&amp;quot;主页 GET 请求&amp;quot;);&lt;br /&gt;
   res.send('Hello GET');&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
//  POST 请求&lt;br /&gt;
app.post('/', function (req, res) {&lt;br /&gt;
   console.log(&amp;quot;主页 POST 请求&amp;quot;);&lt;br /&gt;
   res.send('Hello POST');&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
//  /del_user 页面响应&lt;br /&gt;
app.get('/del_user', function (req, res) {&lt;br /&gt;
   console.log(&amp;quot;/del_user 响应 DELETE 请求&amp;quot;);&lt;br /&gt;
   res.send('删除页面');&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
//  /list_user 页面 GET 请求&lt;br /&gt;
app.get('/list_user', function (req, res) {&lt;br /&gt;
   console.log(&amp;quot;/list_user GET 请求&amp;quot;);&lt;br /&gt;
   res.send('用户列表页面');&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
// 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求&lt;br /&gt;
app.get('/ab*cd', function(req, res) {   &lt;br /&gt;
   console.log(&amp;quot;/ab*cd GET 请求&amp;quot;);&lt;br /&gt;
   res.send('正则匹配');&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
var server = app.listen(8081, function () {&lt;br /&gt;
   var host = server.address().address&lt;br /&gt;
   var port = server.address().port&lt;br /&gt;
 &lt;br /&gt;
   console.log(&amp;quot;应用实例，访问地址为 http://%s:%s&amp;quot;, host, port)&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 执行以上代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ node express_demo2.js &lt;br /&gt;
应用实例，访问地址为 http://0.0.0.0:8081&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 接下来你可以尝试访问 http://127.0.0.1:8081 不同的地址，查看效果：&lt;br /&gt;
## 访问 http://127.0.0.1:8081/list_user ：&lt;br /&gt;
##: [[File:Node.js：Express 框架：路由：示例1.png|400px]]&lt;br /&gt;
## 访问 http://127.0.0.1:8081/abcd ：&lt;br /&gt;
##: [[File:Node.js：Express 框架：路由：示例2.png|400px]]&lt;br /&gt;
## 访问 http://127.0.0.1:8081/abcdefg ：&lt;br /&gt;
##: [[File:Node.js：Express 框架：路由：示例3.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== 静态文件 ==&lt;br /&gt;
Express 提供了内置的中间件 '''express.static''' 来设置静态文件如：图片， CSS, JavaScript 等。&lt;br /&gt;
* 可以使用 express.static 中间件来设置静态文件路径。&lt;br /&gt;
&lt;br /&gt;
例如，如果将图片， CSS, JavaScript 文件放在 public 目录下：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
app.use('/public', express.static('public'));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
就可以到 public/images 目录下放些图片,如下所示：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
node_modules&lt;br /&gt;
server.js&lt;br /&gt;
public/&lt;br /&gt;
public/images&lt;br /&gt;
public/images/logo.png&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
示例：修改 &amp;quot;Hello World&amp;quot; 应用添加处理静态文件的功能：&lt;br /&gt;
# 创建 express_demo3.js 文件：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
var express = require('express');&lt;br /&gt;
var app = express();&lt;br /&gt;
 &lt;br /&gt;
app.use('/public', express.static('public'));&lt;br /&gt;
 &lt;br /&gt;
app.get('/', function (req, res) {&lt;br /&gt;
   res.send('Hello World');&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
var server = app.listen(8081, function () {&lt;br /&gt;
   var host = server.address().address&lt;br /&gt;
   var port = server.address().port&lt;br /&gt;
&lt;br /&gt;
   console.log(&amp;quot;应用实例，访问地址为 http://%s:%s&amp;quot;, host, port)&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 执行以上代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ node express_demo3.js &lt;br /&gt;
应用实例，访问地址为 http://0.0.0.0:8081&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 在浏览器中访问 http://127.0.0.1:8081/public/images/logo.png （本实例采用了菜鸟教程的 logo），结果如下图所示：&lt;br /&gt;
#: [[File:Node.js：Express 框架：静态文件：示例.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== GET 方法 ==&lt;br /&gt;
示例：在表单中通过 '''GET''' 方法提交两个参数，我们可以使用 server.js 文件内的 '''process_get''' 路由器来处理输入：&lt;br /&gt;
# index.html 文件代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;http://127.0.0.1:8081/process_get&amp;quot; method=&amp;quot;GET&amp;quot;&amp;gt;&lt;br /&gt;
First Name: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;first_name&amp;quot;&amp;gt;  &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Last Name: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;last_name&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Submit&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# server.js 文件代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
var express = require('express');&lt;br /&gt;
var app = express();&lt;br /&gt;
 &lt;br /&gt;
app.use('/public', express.static('public'));&lt;br /&gt;
 &lt;br /&gt;
app.get('/index.html', function (req, res) {&lt;br /&gt;
   res.sendFile( __dirname + &amp;quot;/&amp;quot; + &amp;quot;index.html&amp;quot; );&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
app.get('/process_get', function (req, res) {&lt;br /&gt;
   // 输出 JSON 格式&lt;br /&gt;
   var response = {&lt;br /&gt;
       &amp;quot;first_name&amp;quot;:req.query.first_name,&lt;br /&gt;
       &amp;quot;last_name&amp;quot;:req.query.last_name&lt;br /&gt;
   };&lt;br /&gt;
   console.log(response);&lt;br /&gt;
   res.end(JSON.stringify(response));&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
var server = app.listen(8081, function () {&lt;br /&gt;
   var host = server.address().address&lt;br /&gt;
   var port = server.address().port&lt;br /&gt;
 &lt;br /&gt;
   console.log(&amp;quot;应用实例，访问地址为 http://%s:%s&amp;quot;, host, port)&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 执行以上代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
node server.js &lt;br /&gt;
应用实例，访问地址为 http://0.0.0.0:8081&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 浏览器访问 http://127.0.0.1:8081/index.html ：&lt;br /&gt;
#: [[File:Node.js：Express 框架：GET 方法：示例.png|400px]]&lt;br /&gt;
&lt;br /&gt;
演示：&lt;br /&gt;
: [[File:Node.js：Express 框架：GET 方法：演示.gif|400px]]&lt;br /&gt;
&lt;br /&gt;
== POST 方法 ==&lt;br /&gt;
示例：在表单中通过 '''POST''' 方法提交两个参数，我们可以使用 server.js 文件内的 '''process_post''' 路由器来处理输入：&lt;br /&gt;
# index.html 文件代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;http://127.0.0.1:8081/process_post&amp;quot; method=&amp;quot;POST&amp;quot;&amp;gt;&lt;br /&gt;
First Name: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;first_name&amp;quot;&amp;gt;  &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Last Name: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;last_name&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Submit&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# server.js 文件代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;14&amp;quot;&amp;gt;&lt;br /&gt;
var express = require('express');&lt;br /&gt;
var app = express();&lt;br /&gt;
var bodyParser = require('body-parser');&lt;br /&gt;
 &lt;br /&gt;
// 创建 application/x-www-form-urlencoded 编码解析&lt;br /&gt;
var urlencodedParser = bodyParser.urlencoded({ extended: false })&lt;br /&gt;
 &lt;br /&gt;
app.use('/public', express.static('public'));&lt;br /&gt;
 &lt;br /&gt;
app.get('/index.html', function (req, res) {&lt;br /&gt;
   res.sendFile( __dirname + &amp;quot;/&amp;quot; + &amp;quot;index.html&amp;quot; );&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
app.post('/process_post', urlencodedParser, function (req, res) {&lt;br /&gt;
   // 输出 JSON 格式&lt;br /&gt;
   var response = {&lt;br /&gt;
       &amp;quot;first_name&amp;quot;:req.body.first_name,&lt;br /&gt;
       &amp;quot;last_name&amp;quot;:req.body.last_name&lt;br /&gt;
   };&lt;br /&gt;
   console.log(response);&lt;br /&gt;
   res.end(JSON.stringify(response));&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
var server = app.listen(8081, function () {&lt;br /&gt;
   var host = server.address().address&lt;br /&gt;
   var port = server.address().port&lt;br /&gt;
 &lt;br /&gt;
   console.log(&amp;quot;应用实例，访问地址为 http://%s:%s&amp;quot;, host, port)&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 执行以上代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ node server.js&lt;br /&gt;
应用实例，访问地址为 http://0.0.0.0:8081&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 浏览器访问 http://127.0.0.1:8081/index.html ，如图所示：&lt;br /&gt;
: [[File:Node.js：Express 框架：POST 方法：示例.png|400px]]&lt;br /&gt;
&lt;br /&gt;
演示：&lt;br /&gt;
: [[File:Node.js：Express 框架：POST 方法：演示.gif|400px]]&lt;br /&gt;
&lt;br /&gt;
== 文件上传 ==&lt;br /&gt;
示例：创建一个用于上传文件的表单，使用 '''POST''' 方法，表单 '''enctype''' 属性设置为 '''multipart/form-data'''：&lt;br /&gt;
# index.html 文件代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;文件上传表单&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;文件上传：&amp;lt;/h3&amp;gt;&lt;br /&gt;
选择一个文件上传: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;/file_upload&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;image&amp;quot; size=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;上传文件&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# server.js 文件代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
var express = require('express');&lt;br /&gt;
var app = express();&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
var bodyParser = require('body-parser');&lt;br /&gt;
var multer  = require('multer');&lt;br /&gt;
 &lt;br /&gt;
app.use('/public', express.static('public'));&lt;br /&gt;
app.use(bodyParser.urlencoded({ extended: false }));&lt;br /&gt;
app.use(multer({ dest: '/tmp/'}).array('image'));&lt;br /&gt;
 &lt;br /&gt;
app.get('/index.html', function (req, res) {&lt;br /&gt;
   res.sendFile( __dirname + &amp;quot;/&amp;quot; + &amp;quot;index.html&amp;quot; );&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
app.post('/file_upload', function (req, res) {&lt;br /&gt;
 &lt;br /&gt;
   console.log(req.files[0]);  // 上传的文件信息&lt;br /&gt;
 &lt;br /&gt;
   var des_file = __dirname + &amp;quot;/&amp;quot; + req.files[0].originalname;&lt;br /&gt;
   fs.readFile( req.files[0].path, function (err, data) {&lt;br /&gt;
        fs.writeFile(des_file, data, function (err) {&lt;br /&gt;
         if( err ){&lt;br /&gt;
              console.log( err );&lt;br /&gt;
         }else{&lt;br /&gt;
               response = {&lt;br /&gt;
                   message:'File uploaded successfully', &lt;br /&gt;
                   filename:req.files[0].originalname&lt;br /&gt;
              };&lt;br /&gt;
          }&lt;br /&gt;
          console.log( response );&lt;br /&gt;
          res.end( JSON.stringify( response ) );&lt;br /&gt;
       });&lt;br /&gt;
   });&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
var server = app.listen(8081, function () {&lt;br /&gt;
   var host = server.address().address&lt;br /&gt;
   var port = server.address().port&lt;br /&gt;
 &lt;br /&gt;
   console.log(&amp;quot;应用实例，访问地址为 http://%s:%s&amp;quot;, host, port)&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 执行以上代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ node server.js &lt;br /&gt;
应用实例，访问地址为 http://0.0.0.0:8081&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 浏览器访问 http://127.0.0.1:8081/index.html ，如图所示：&lt;br /&gt;
#: [[File:Node.js：Express 框架：文件上传：示例.png|400px]]&lt;br /&gt;
&lt;br /&gt;
演示：&lt;br /&gt;
: [[File:Node.js：Express 框架：文件上传：演示.gif|400px]]&lt;br /&gt;
&lt;br /&gt;
== Cookie 管理 ==&lt;br /&gt;
我们可以使用中间件向 Node.js 服务器发送 cookie 信息。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
示例：输出客户端发送的 cookie 信息：&lt;br /&gt;
# express_cookie.js 文件代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
var express      = require('express')&lt;br /&gt;
var cookieParser = require('cookie-parser')&lt;br /&gt;
var util = require('util');&lt;br /&gt;
 &lt;br /&gt;
var app = express()&lt;br /&gt;
app.use(cookieParser())&lt;br /&gt;
 &lt;br /&gt;
app.get('/', function(req, res) {&lt;br /&gt;
    console.log(&amp;quot;Cookies: &amp;quot; + util.inspect(req.cookies));&lt;br /&gt;
})&lt;br /&gt;
 &lt;br /&gt;
app.listen(8081)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 执行以上代码：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
$ node express_cookie.js&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# 现在你可以访问 http://127.0.0.1:8081 并查看终端信息的输出：&lt;br /&gt;
#: [[File:Node.js：Express 框架：Cookie 管理：演示.gif|400px]]&lt;br /&gt;
&lt;br /&gt;
== 相关资料 ==&lt;br /&gt;
* [http://expressjs.com/ Express官网]&lt;br /&gt;
* [http://expressjs.com/zh-cn/4x/api.html Express4.x API]&lt;br /&gt;
* [https://www.runoob.com/w3cnote/express-4-x-api.html Express4.x API 中文版]&lt;/div&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
</feed>