{{sellerTotalView > 1 ? __("sellers", {number: sellerTotalView}) : __("seller", {number: sellerTotalView}) }}, {{numTotalView > 1 ? __("items", {number: numTotalView}) : __("item", {number: numTotalView}) }}
free FREE

Change Your Zip Code

Inventory information and delivery speeds may vary for different locations.

Location History

{{email ? __('Got it!') : __('Restock Alert')}}

We will notify you by email when the item back in stock.

Cancel
Yami

Jingdong book

Node.js项目实践:构建可扩展的Web应用

{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}

Node.js项目实践:构建可扩展的Web应用

{{__(":people-members", {'people': item.limit_people_count})}} {{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
Ends in
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{itemDiscount}}
{{ itemCurrency }}{{ item.valid_price }}
Sale ends in
Sale will starts after Sale ends in
{{ getSeckillDesc(item.seckill_data) }}
{{ __( "Pay with Gift Card to get sale price: :itemCurrency:price", { 'itemCurrency' : itemCurrency, 'price' : (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00') } ) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) Details
Best before

Currently unavailable.

We don't know when or if this item will be back in stock.

Unavailable in your area.
Sold Out

Details

Full product details
Content Description

《Node.js项目实践:构建可扩展的Web应用》用专业的讲解方式,带领读者从“Hello World”示例开始,一步步将其构建成有实际用途的Node.js应用。《Node.js项目实践:构建可扩展的Web应用》涉及许多组件的使用,比如安全、部署上线、组织代码、数据库驱动和模板引擎等,从中可使读者接触到很多经过历年实践所得出的广受欢迎的模块库,它们可以大大提高开发人员的代码质量和开发效率。

Author Description

Azat Mardan ,在互联网、移动、软件开发方面有十多年的工作经验。他拥有信息学学士以及信息系统硕士学位,并且掌握和实践经验一样丰富的学术知识。最近,Azat 以团队领导/高级软件工程师的角色工作于DocuSign,他的团队采用全新技术 Node.js 栈、Express.js、
Backbone.js、CoffeeScript、Jade、Stylus 以及 Redis 重构了拥有 5000 万用户的产品(DocuSign 网络应用)。
之前,Azat 曾在 Storify.com(2013 被收购)、美国国家生物技术信息中心、联邦存款保险公司、洛克希德马丁以及其他公司任高级软件工程师。他在 Marakana 开源社区(2013 被收购)、pariSOMA、General Assembly San Francisco 以及Hack Reactor 上教编程,获得一致好评。Azat 会利用业余时间在他的博客 webapplog.com 上写技术文章。
Azat 是开源 Node.js 项目:ExpressWorks、mongoui、HackHall 和 NodeFramework.com的创建者,同时,也是 Express、OAuth、jade-browser 以及其他 NPM 模块的贡献者。

Catalogue

第1章安装Node.js及相关要点 1
安装Node.js和NPM 1
一键安装 2
通过HomeBrew或MacPorts安装 3
通过tar文件安装 4
须sudo授权进行安装 4
通过Git Repo进行安装 5
通过Nave进行多版本安装 5
通过NVM进行多版本安装 6
其他的多版本系统 6
检查安装 7
Node.js控制台(REPL) 7
加载Node.js脚本 9
Node.js的基础和语法 9
弱类型 9
Buffer――Node.js特殊数据类型 10
对象字面量 10
函数 11
数组 12
原型特性 12
编码规范 13
Node.js的全局变量和保留字 14
__dirname与process.cwd的对比 17
浏览器API输助工具 17
Node.js的核心模块 18
便捷的Node.js工具 20
在Node.js中读写文件 20
Node.js中的数据流 21
使用NPM安装Node.js模块 21
优化Node.js中的回调函数 22
使用Node.js的HTTP模块来创建一个简单服务器 23
调试Node.js程序 24
核心Node.js调试 24
使用Node Inspector来调试 25
Node.js集成开发环境和代码编辑器 28
监听文件变化 30
小结 31
第2章使用Express.js 4创建Node.js的Web应用程序 32
什么是Express.js 32
Express.js是如何工作的 35
Express.js的安装 36
Express.js的版本 36
Express.js生成器 37
本地Express.js 38
Express.js脚手架 40
Express.js命令行界面 41
Express.js中的路由 43
Express.js的核心――中间件 44
一个Express.js应用的配置 45
Jade就是Express.js/Node.js的Haml 45
脚手架总结 45
博客项目概述 46
提交数据 47
Express.js 4中的Hello World例子 48
创建文件夹 49
NPM初始化和package.json 50
依赖声明:npm install 50
app.js文件 51
Jade模板 55
运行Hello World应用 56
小结 56
第3章Node.js基于Mocha的测试驱动开发和行为驱动开发 57
安装与理解Mocha 58
理解Mocha的hook机制 60
用assert进行TDD 61
断言库Chai 63
用expect.js进行BDD 64
Expect.js的语法 65
项目:为博客开发一个BDD测试 65
将配置参数写入Makefile 68
小结 69
第4章模板引擎:Jade和Handlebars 70
Jade的语法和特性 70
标签 71
变量/数据 71
属性 72
字面量 73
文本 73
Script 和 Style块 74
JavaScript代码 74
注释 75
if语句 75
each语句 75
过滤器 76
读取变量 76
case 76
函数mixin 77
include 78
extend 78
单独使用Jade 79
Handlebars的语法 83
变量 83
each语句 83
非转义输出 84
if语句 85
unless 85
with 86
注释 87
自定义 Helpers 87
Include 88
单独使用Handlebars 88
Express.js 4中Jade和Handlebars的用法 91
Jade 和 Express.js 92
Handlebars和Express.js 92
项目:给博客添加Jade模板 93
layout.jade 94
index.jade 96
article.jade 97
login.jade 98
post.jade 99
admin.jade 100
小结 101
第5章MongoDB、Mongoskin特性 102
简单且正确地安装MongoDB 103
如何运行Mongo服务 104
用控制台操作Mongo 105
MongoDB Shell命令介绍 106
Node.js版原生MongoDB驱动示例 107
Mongoskin的主要方法介绍 111
项目:用Mongoskin把博客数据存储到MongoDB 112
项目:在MongoDB中添加seed数据 112
项目:Mocha测试 113
项目:添加持久连接 115
运行App 126
小结 127
第6章在Node.js应用中使用session和OAuth进行用户认证和授权 128
使用Express.js中间件权限管理 128
基于token的用户认证 129
基于session的用户认证 130
项目实践:为博客增加邮箱和密码登录功能 132
session中间件 132
博客中的权限管理 133
博客中的用户授权 136
运行应用 138
Node.js OAuth 138
使用Node.js OAuth实现Twitter OAuth 2.0的示例 139
Everyauth 140
项目实践:为博客增加Twitter OAuth 1.0第三方登录(使用Everyauth实现) 141
添加“使用Twitter账户登录”链接 142
配置EveryauthTwitter模块 142
小结 148
第7章使用ORM类库Mongoose提升你的Node.js数据 149
安装Mongoose 150
用独立的Mongoose 脚本建立数据库连接 150
Mongoose的原型 152
使用钩子保持代码的逻辑清晰 154
自定义静态方法和实例方法 155
Mongoose 模型 155
使用population建立关系和连接 158
嵌套的文档 160
虚拟字段 161
修改原型的行为 162
Express.js + Mongoose =真正的MVC 164
小结 175
第8章使用Express.js和Hapi构建Node.js REST API服务 176
RESTful API基础 177
项目依赖 179
使用Mocha和Superagent进行测试 180
使用Express和Mongoskin实现REST API服务器 185
重构:使用Hapi搭建REST API服务器 192
小结 199
第9章WebSocket、Socket.IO和DerbyJS的实时应用程序 200
什么是WebSocket 200
用ws模块的例子介绍本地WebSocket和Node.js 201
浏览器WebSocket的实现 201
用ws模块实现Node.js服务器 202
Socket.IO和Express.js的例子 204
用DerbyJS、Express.js和MongoDB搭建一个在线协作的代码编辑器例子 209
项目依赖和package.json 210
服务器端代码 211
DerbyJS应用程序 213
DerbyJS视图 215
编辑器Tryout 217
小结 218
第10章为Node.js应用上线做准备 219
环境变量 219
生产环境下的Express.js 220
生产环境下的Socket.IO 222
错误处理 223
错误处理工具Node.js domains 225
使用Cluster处理多线程 229
使用Cluster2处理多线程 232
事件日志和监控 233
监控 233
生产环境下的REPL 235
Winston 236
使用Papertrail应用来管理日志 237
使用Grunt处理任务 237
使用Git来做版本控制和发布代码 241
安装Git 242
生成SSH密钥 242
创建本地Git仓库 245
将本地仓库推送到GitHub 245
在云上使用TravisCI运行测试用例 246
TravisCI配置 247
小结 248
第11章部署Node.js应用 249
部署到Heroku 249
部署到Amazon网络服务 255
使用forever、Upstart和init.d保持Node.js持续运行 259
forever 259
Upstart脚本 260
init.d 262
尽可能使用Nginx提供静态资源 264
使用Varnish缓存 266
小结 268
第12章Node.js模块发布和参与开源 269
推荐的目录结构 270
所需模式 270
package.json 273
发布到NPM 274
锁定版本 274
小结 275
结束语 275
进阶阅读 276
勘误和联系方式 276

Introduction

近来,介绍Node.js 的书籍和网络资源越来越多,比如输出Hello World 或如何开发简单的应用。但大多数的教程都只是依赖核心包或一两个NPM(Node 包管理器)插件而已,这种“沙盒”式的教程虽然方便快捷且不需要很多的依赖关系,可相对于真正的Node.js项目实践而言,这些还真的只能算是“基础知识”。原因在于,Node.js 特殊的设计模式—保持短小精悍。同时,拥有大量用户群的非官方Node 包/模块管理和分发生态系统(例如:NPM)也在飞速成长着,为Node.js 提供了良好的产业发展。与Node.js 有关的一切实用资源都在那里可以找到,包罗万象,可以用来当作学习工具,查找代码案例,甚至是参考手册。
本书的用途
本书可以说是一本实践手册,这里详细讲解了如何借用Node.js 的模块包富生态系统来打造精良的Web 服务和应用。这对所有Web 开发者来说都是一件很重要的事情,因为现实中的Web 应用开发会涉及许多组件的使用,比如安全、部署上线、组织代码、数据库驱动和模板引擎等。所以,在本书的12 个章节中,我们也会对第三方服务、命令行工具、NPM诸多的模块、框架和库进行充分的介绍。
这里先让诸位兴奋一下,本书中对技术和工具的介绍是一条龙飞起来的,从Express.js 4开始,Hapi.js、DerbyJS、Mongoskin、Mongoose、Everyauth、Mocha、Jade、Socket.IO、TravisCI、Heroku、Amazon Web Services(AWS)等,根本停不下来,并且其中很多内容都是在严谨的项目中扮演着至关重要的角色。
另外,我们的项目实例都是从几个概念明确的小项目开始,再逐步构建成一个复杂的应用程序的。你可以在这些成熟的项目样本基础上按需启动你自己的开发工作,自然也就可以避免高价走歪路。
最后同样重要的是,看完这本书也不算完!当你在实际项目中遇到具有挑战性的问题时,你可能需要再回来查阅本书中的某些论题和章节,是的,本书同样具有参考手册的功能。
本书的宗旨只有一个,尽量减少你的开发时间,进而使你成为更专业的Node.js 工程师!
内容概要
本书会从JavaScript 与Node.js 的基础概念讲起,随后是必要模块的安装和详细介绍,再循序渐进地讲解如何编写和部署Web 应用项目等你想了解的一切相关知识。我们会讨论到各种库的引用,包括但不限于Express.js 4 和 Hapi.js 框架,操作MongoDB 数据库的Mongoskin 和 Mongoose ORM,还有Jade 和 Handlebars 模板引擎,授权用户认证的OAuth模块和集成OAuth 的Everyauth 库,Mocha 单元测试框架和Expect TDD/BDD(测试驱动开发/行为驱动开发)语法,基于WebSocket 协议提供实时通信的Socket.IO 和DerbyJS 库。
本书还会在讲解代码部署的章节中(第10 章和第11 章)详细介绍如何使用Git 管理你的代码,并将它们部署到Heroku 平台和Amazon Web Service 云服务平台上去。我们还利用Nginx、Varnish 缓存、Upstart 脚本、init.d 脚本,还有forever 模块等技术保证了应用程序的稳定运行。
如果你能跟着本书一起写代码,那你可以接触到一个由众多小例子迭代开发形成的博客项目。你会从零开始构建数据库脚本,写REST API 和添加单元测试等进行全栈式的应用开发。你还能学习到如何写你自己的Node.js 模块包并将它们发布到NPM 平台上去。
通过本书,你将学会:
? 使用Express.js 4、MongoDB 和Jade 模板引擎构建Web 应用
? 介绍Jade 和Handlebars 的各种功能
? 利用MongoDB 控制台操作MongoDB 数据库中的数据
? 使用Mongoskin 和Mongoose ORM 库操作MongoDB 数据库
? 使用Express.js 4 和Hapi.js 构建REST API 服务
? 通过Mocha、Expect 和TravisCI 为Node.js web 服务做测试用例
? 基于token 和session 的身份验证
? 使用Everyauth 库实现第三方(Twitter)OAuth 授权认证
? 使用Socket.IO 和DerbyJS 库构建WebSocket 应用
? 利用Redis、Node.js domains 模块,以及cluster 库等实践和技巧来准备生产环境的代码
? 利用Git 将应用代码部署到Heroku 平台
? 在Amazon Web Services(AWS)云服务上部署Node.js 应用时需要安装的组件
? 在AWS 云服务实例上配置Nginx、Upstart、Varnish 和其他工具模块
? 编写你自己的Node.js 模块并将它们发布到NPM 平台上去
通过上面这些内容,你应该已经十分清楚什么是Node.js 了,之后就看你能用它做些什么,和你可以掌握它到什么程度的事情了。
阅读提示
虽然在第1 章我们就讲到了各种安装方式和Node.js 与浏览器端JavaScript 的一些重要区别,可本书的核心思想依旧是如何构建可用于生产环境的Node.js 应用,或更大更复杂的Node.js 项目实践。因此,本书并不是新手入门书,也没有对Node.js 工作原理与核心模块进行深入介绍。
我们也不能保证书中每个组件的介绍和话题你都会感兴趣和使用到,因为这个要看你具体的项目需求。基本上没有可行的方法把那么多话题放到一本书里,然后事无巨细地讲解。我们只求你能通过阅读本书快速开始构建你自己的项目。
关于本书的另一个提醒(也适用于任何其他编程的书籍),本书例子中所适用的模块包版本最终都会过时。不过,通常情况下这并不是一个问题,毕竟在本书的例子中已经显式锁定了版本号。所以不管怎样,只要你用的是我们实例中使用的版本号,就没问题。
即便你决定要使用最新版本的组件,许多情况下这也不是问题,因为组件还是一个组件,只是版本不同而已,一般有良心的维护者都会使其向下兼容的,仔细调试一下就可以了,偶尔出现了Bug 导致应用运行中断也是很容易就可以修复的。
读者对象
本书是一本介绍Node.js 编程的书籍,学习难度在中高级水平。为了有效地使用它,你需要有一定的Node.js 编程经验。我们假定本书的读者已熟悉计算机科学、编程概念、Web开发、Node.js 核心模块、HTTP 和互联网工作原理等相关领域的知识。
根据你的编程水平和学习能力,你可以通过本书中所引用的外部资源链接去快速访问该知识点的官方文档和相关介绍,从而填充这一部分知识的空缺。另外,如果你有其他编程语言的编程背景,那在学习Node.js 和阅读本书时相对而言会比较容易理解。
正如前面提到的,本书是为中级和高级软件工程师编写的。出于这个原因,有三类程序员最能够从中受益:
1. 通才或全栈开发工程师,还包括开发运营(DevOp)和质量保证(QA)自动化工程师
2. 有经验的前端Web 开发人员,对浏览器端JavaScript 有深度的理解
3. 熟练使用其他语言(如Java、PHP 和Ruby)的后端软件工程师,相信谁都不会介意用JavaScript 语言做一些可以加快工作效率的事情
源代码
为了更有效地学习本书中的知识点,我们几乎在每一章中都会列举出很多代码实例,以让你进行更好的理解。出于方便和开源透明的信念,我们将书中所有实例都在GitHub 上公开。
勘误和联系方式
如果你发现任何错误或错别字等(好吧,我想你肯定会找到的),请在放置本书实例的GitHub 上开个议题或直接在代码里修复了再更新上来吧。关于其他更新和联系信息,可以访问我们为本书提供的站点。
符号的使用
本书遵循一些格式化惯例,代码使用的是等宽字体,例如:var book = {name:'Practical Node.js'};。如果代码行以“$”符号开始,那意味着这段代码是在终端/命令行方式下执行的。但如果代码行始于“>”,则代表代码是在虚拟环境下运行的(也可以说是“控制台”,无论是Node.js 或MongoDB 的)。如果在代码里有调用到Node.js 模块,一般都会以require()方法引入,且这个NPM 名称就作为变量名,如superagent。
你为什么要读这本书
本书会用专业的讲解方式,带你从“Hello World”示例开始,一步步将其构建成有实际用途的Node.js 应用。从中你可以接触到很多经过历年实践所得出的广受欢迎的Node.js模块库,它们可以大大提高你的代码质量和开发效率。同时,虽然本书中所讲的并不是什么开创性的高科技,但通过它你可以节省大量在网上查询开发资料(有些你可能查不到)的时间。因此,我们可以负责任地说,如果你能认真看完本书,那你在Node.js 编程上的开发能力将出现质的飞跃!

Specifications

Brand Jingdong book
Brand Origin China

Disclaimer

Product packaging, specifications and price are subject to change without notice. All information about the products on our website is provided for information purposes only. Please always read labels, warnings and directions provided with the product before use.

View Full Terms of Use
Add to favorites
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}
{{__("Buy Directly")}} {{ itemCurrency }}{{ item.directly_price }}
Quantity
{{ quantity }}
{{ instockMsg }}
{{ limitText }}
{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}
Sold by JD@CHINA
Ship to
{{ __("Ship to United States only") }}
Free shipping over 69
Genuine guarantee

Added to Cart

Keep Shopping

More to Consider

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

Coupons

{{ coupon.coupon_name_new | formatCurrency }}
Clip Clipped Over
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
Expires soon {{ formatTime(coupon.use_end_time) }}

Share this item with friends

Cancel

Yami Gift Card

Get this exclusive deal when paying with gift card

Terms and Conditions

Gift card deals are special offers for selected products;

The gift card deals will automatically be activated if a customer uses gift card balance at check out and the balance is sufficient to pay for the total price of the shopping cart products with gift card deals;

You will not be able to activate the gift card deals if you choose other payment methods besides gift card. The products will be purchased at their normal prices;

If your account balance is not enough to pay for the products with gift card deals, you can choose to reload your gift card balance by clicking on the Reload button at either shopping cart page or check out page;

Products that have gift card deals can be recognized by a special symbol showing 'GC Deal';

For any additional questions or concerns, please contact our customer service;

Yamibuy reserves the right of final interpretation.

Sold by Yami

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

Yami is committed to provide our customers with a peace of mind when purchasing from us. Most items shipped from Yamibuy.com can be returned within 30 days of receipt of shipment (For Food, Beverages, Snacks, Dry Goods, Health supplements, Fresh Grocery and Perishables Goods, within 7 days of receipt of shipment due to damages or quality issues; To ensure that every customer receives safe and high-quality products, we do not provide refunds or returns for beauty products once they have been opened or used, except in the case of quality issues; Some products may have different policies or requirements associated with them, please see below for products under special categories, or contact Yami Customer Service for further assistance).
Thank you for your understanding and support.

Learn More

Sold by Yami

Terms and Conditions of Yami E-Gift Card

If you choose “Redeem automatically” as your delivery method, your gift card balance will be reload automatically after your order has been processed successfully;

If you choose “Send to Email”as your delivery method, the card number and CVV will be sent to the email address automatically;

Any user can use the card number and CVV to redeem the gift card, please keep your gift card information safely. If you have any trouble receiving email, please contact Yami customer service;

Yami gift card can be used to purchase both Yami owned or Marketplace products;

Yami gift card will never expire;

Yami gift card balance does not have to be used up at once;

All rights reserved by Yami.

Return Policy

Gift card that has already been consumed is non-refundable.

Sold by JD@CHINA

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Sold by JD@CHINA

Service Guarantee

Yami Cross-store Free Shipping over $69
Yami 30-days Return

Yami-China FC

Yami has a consolidation warehouse in China which collects multiple sellers’ packages and combines to one order. Our Yami consolidation warehouse will directly ship the packages to your door. Cross-store free shipping over $69.

Return Policy

You may return products within 30 days upon receiving the products. Sellers take responsibilities for any wrong shipment or missing items. Packing needs to be unopened for any other than quality issues return. We promise to pack carefully, but because goods are taking long journey to destinations, simple damages to packaging may occur. Any damages not causing internal goods quality problems are not allowed to return. If you open the package and any quality problem is found, please contact customer service within three days after receipt of goods.

Shipping Information

Yami Consolidation Service Shipping Fee $9.99(Free shipping over $69)

Sellers in China will ship their orders within 1-2 business days once the order is placed. Packages are sent to our consolidation warehouse in China and combined there. Our Yami consolidation warehouse will directly ship the packages to you via UPS. The average time for UPS to ship from China to the United States is about 10 working days and it can be traced using the tracking number. Due to the pandemic, the delivery time may be delayed by about 5 days. The package needs to be signed by the guest. If the receipt is not signed, the customer shall bear the risk of loss of the package.

Sold by JD@CHINA

Service Guarantee

Free shipping over 69
Genuine guarantee

Shipping

Yami Consolidated Shipping $9.99(Free shipping over $69)


Seller will ship the orders within 1-2 business days. The logistics time limit is expected to be 7-15 working days. In case of customs clearance, the delivery time will be extended by 3-7 days. The final receipt date is subject to the information of the postal company.

Yami Points information

All items are excluding from any promotion or points events on Yamibuy.com

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Yami

Download the Yami App

Back Top

Recommended for You

About the brand

Jingdong book

为您推荐

Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折

Reviews{{'('+ commentList.posts_count + ')'}}

Have your say. Be the first to help other guests.

Write a review
{{ totalRating }} Write a review
  • {{i}} star

    {{i}} stars

    {{ parseInt(commentRatingList[i]) }}%

Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}
Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}

No related comment~

Review

Yami Yami

{{ showTranslate(commentDetails) }}Show Less

{{ strLimit(commentDetails,800) }}Show more

Show Original

{{ commentDetails.content }}

Yami
Show All

{{ formatTime(commentDetails.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{commentDetails.in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Comments{{'(' + replyList.length + ')'}}

Yami Yami

{{ showTranslate(reply) }}Show Less

{{ strLimit(reply,800) }}Show more

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{reply.reply_in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Cancel

That’s all the comments so far!

Write a review
How would you rate this item?

Please add your comment.

  • A nice nickname will make your comments more popular!
  • The nickname in your account will be changed to the same as here.
Thanks for your review
Our community rely on great reviews like yours to find the best of Asia.

Report

If you find this content inappropriate and think it should be removed from the Yami.com site, let us know please.

Cancel

Are you sure to delete your review?

Cancel

You’ve Recently Viewed

About the brand

Jingdong book