Nodejs开发指南阅读笔记

第一章 Node.js简介          第二章 安装和配置Node.js
1、Node.js是一个让Javascript运行在服务端的开发平台。
2、Node.js中所谓的Javascript只是Core Javascript.不包含DOM、BOM或者ClientJavascript。
3、Node.js的Javascript引擎V8,是号称世界上最快的Javascript引擎。它的JIT(Just-in-time compilation即时编译)执行速度接近本地。
4、Node.js内建了HTTP服务器支持。
5、Node.js最大的特点是采用 异步式I/O与事件驱动的架构设计。
6、RingoJS基于Rhino实现类似服务端Javascript平台。CouchDB,MongoDB新型非关系型数据库。ECMAScript浏览器端Javascript规范,CommonJS规范是服务器端Javascript规范。
第三章 Node.js快速入门
1、node script.jsnode -e 'console.log("hello world");'要执行的语句作为node -e参数
2、REPL(Read-eval-print loop)模式即输入-求职-输出循环 ctrl+c 两次退出
3、npm install -g supervisor,supervisor可以帮助你实现监视你的代码改动,自动重启nodejs。
4、线程在执行中如果遇到磁盘读写或网络通信(统称I/O操作),通常要耗费较长时间,这时操作系统会剥夺这个线程的CPu控制权,使其暂停执行,同时将资源让给其他工作线程,这种线程调用方式称为阻塞
异步式I/O或非阻塞式I/O则针对所有I/O操作不采用阻塞的策略。遇到I/O操作时,不阻塞,而是将请求发送到操作系统,继续执行下一条语句。当系统完成I/O操作时,以事件的形式通知执行I/O操作的线程,线程会在特定时间处理这个事件。
5、
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="kwd" style="color:#0088;">var</span><span class="pln" style="color:#000000;"> http </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">require</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'http'</span><span class="pun" style="color:#66660;">);</span>

<span class="pln" style="color:#000000;">http</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">createServer</span><span class="pun" style="color:#66660;">(</span><span class="kwd" style="color:#0088;">function</span><span class="pun" style="color:#66660;">(</span><span class="kwd" style="color:#0088;">require</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> response</span><span class="pun" style="color:#66660;">)</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">{</span>
<span class="pln" style="color:#000000;"> response</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">writeHead</span><span class="pun" style="color:#66660;">(</span><span class="lit" style="color:#06666;">200</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">{</span><span class="str" style="color:#0880;">'Content-Type'</span><span class="pun" style="color:#66660;">:</span><span class="pln" style="color:#000000;"> </span><span class="str" style="color:#0880;">'text/html'</span><span class="pun" style="color:#66660;">});</span>
<span class="pln" style="color:#000000;"> response</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">write</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'<h1>Node.js</h1>'</span><span class="pun" style="color:#66660;">);</span>
<span class="pln" style="color:#000000;"> response</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">end</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'<p>Hello </p>'</span><span class="pun" style="color:#66660;">);</span>
<span class="pun" style="color:#66660;">}).</span><span class="pln" style="color:#000000;">listen</span><span class="pun" style="color:#66660;">(</span><span class="lit" style="color:#06666;">80</span><span class="pun" style="color:#66660;">);</span></p>
6、
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="kwd" style="color:#0088;">var</span><span class="pln" style="color:#000000;"> fs </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">require</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'fs'</span><span class="pun" style="color:#66660;">);</span>

<span class="pln" style="color:#000000;">fs</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">readFile</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'file.txt'</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> </span><span class="str" style="color:#0880;">'utf-8'</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">function</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">err</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> data</span><span class="pun" style="color:#66660;">){</span>
<span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">if</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">err</span><span class="pun" style="color:#66660;">)</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">{</span>
<span class="pln" style="color:#000000;">  console</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">log</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">err</span><span class="pun" style="color:#66660;">);</span>
<span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">}</span><span class="kwd" style="color:#0088;">else</span><span class="pun" style="color:#66660;">{</span>
<span class="pln" style="color:#000000;">  console</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">log</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">data</span><span class="pun" style="color:#66660;">);</span>
<span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">}</span>
<span class="pun" style="color:#66660;">});</span></p>
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="kwd" style="color:#0088;">var</span><span class="pln" style="color:#000000;"> fs </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">require</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'fs'</span><span class="pun" style="color:#66660;">);</span>

<span class="kwd" style="color:#0088;">var</span><span class="pln" style="color:#000000;"> data </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> fs</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">readFileSync</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'file.txt'</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> </span><span class="str" style="color:#0880;">'utf-8'</span><span class="pun" style="color:#66660;">);</span>
<span class="pln" style="color:#000000;">console</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">log</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">data</span><span class="pun" style="color:#66660;">);</span>
<span class="pln" style="color:#000000;">console</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">log</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'end'</span><span class="pun" style="color:#66660;">);</span></p>
7、Node.js所有的操作完成时都会发送一个事件到事件队列。在开发者看来,事件由EventEmitter对象提供。
8、模块。
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;">//module.js</span>
<span class="pln" style="color:#000000;">exports</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">sayHello </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">function</span><span class="pun" style="color:#66660;">()</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">{</span>
<span class="pln" style="color:#000000;"> console</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">log</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'hello'</span><span class="pun" style="color:#66660;">);</span>
<span class="pun" style="color:#66660;">}</span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="pun" style="color:#66660;">或</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">function</span><span class="pln" style="color:#000000;"> sayhi</span><span class="pun" style="color:#66660;">()</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">{}</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">module</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">exports </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> sayhi</span><span class="pun" style="color:#66660;">;</span>
<span class="com" style="color:#8800;">//getmodule.js</span>
<span class="kwd" style="color:#0088;">var</span><span class="pln" style="color:#000000;"> myModule </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">require</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'./module'</span><span class="pun" style="color:#66660;">);</span>
<span class="pln" style="color:#000000;">myModule</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">sayHello</span><span class="pun" style="color:#66660;">();</span></p>
9、
Nodejs开发指南阅读笔记 - freestyle - freestyle21的博客
 10、作为文件夹的模块。
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;">//package/index.js</span>
<span class="pln" style="color:#000000;">exports</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">hello </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">function</span><span class="pun" style="color:#66660;">(){</span>
<span class="pln" style="color:#000000;"> console</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">log</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'hello.'</span><span class="pun" style="color:#66660;">);</span>
<span class="pun" style="color:#66660;">}</span>
<span class="com" style="color:#8800;">//getpackage.js</span>
<span class="kwd" style="color:#0088;">var</span><span class="pln" style="color:#000000;"> </span><span class="typ" style="color:#66066;">SomePackage</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">require</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'./package'</span><span class="pun" style="color:#66660;">);</span>
<span class="typ" style="color:#66066;">SomePackage</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">hello</span><span class="pun" style="color:#66660;">();</span></p>
11、
Nodejs开发指南阅读笔记 - freestyle - freestyle21的博客
 12、npm link命令可以打破全局模式安装的包不能直接通过require使用这个限制。
npm install -g express 后在工程的目录下运行命令:npm link express就可以把他当成本地包使用了。
13、包的发布:npm adduser创建账号。npm whoami测试是否取得账号。然后使用npm publish就发发布了。打开search.npmjs.org可以找到刚刚发布的包。
14、执行node debug debug.js启动调试工具。n 单步执行   c 直到遇到下一个断点  s 单步并进入函数。
15、npm install -g mode-inspector安装node-inspector,node --debug-brk=5858 debug.js 
然后在启动node-inspector:node-inspector。 在浏览器中打开local:8080/debug?port=5858就可以看到web调试工具。 

第四章 Node.js核心模块
1、在浏览器Javascript中,window是全局对象;Node.js中,全局对象时global。console,process等都是global的属性。
2、process是一个全局变量,即global对象的属性,描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口。
process.argv是命令行参数数组,日一个元素是node,第二个是脚本文件名,从第三个元素开始每个元素是一个运行参数。
process.stdout标准输出流,console.log()向标准输出打印字符,而process.stdout.write()函数提供了更底层的接口。
process.stdin是标准输入流,初始时被暂停,要想从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。
process.nextTick(callback)为事件循环设置一项任务,Node.js会在下次事件循环响应时调用callback。
3、util.inherits(Sub, Base);//一个实现对象间原型继承的函数
util.inspect(person );将任意对象转换成字符串的方法。
4、events模块只提供一个对象:events.EventEmitter。
EventEmitter.on(event, listener);EventEmitter.emit(event, [arg1], [..])
EventEmitter.once(event, listener)EventEmitter.removeListener(event, listener)EventEmitter.removeAllListeners([event]);
5、fs.readFile js.readFileSync fs.openfs.read();//比fs.readFile提供更底层的接口
6、http.Server是一个基于事件的HTTP服务器,它的核心由Node.js下层C++部分实现。接口由Javascript封装。
提供以下几个事件:request,connection,close
http.ServerRequest是HTTP请求信息,三个事件:data,end,close. 简称request或req。
7、获取GET请求内容。由于GET请求直接嵌入到路径中,URL是完整的请求路径,包括?后面部分。因此可以手动解析后面的内容作为GET请求的参数。res.end(util.inspect(url.parse(req.url,true)));
获取POST请求内容:Node.js默认不会解析请求体的,需要的时候,手动解析。
var post = '';   req.on('data', function(chunk) {post += chunk;});  post = querystring.parse(post);
8、http.ServerResponse三个重要成员函数:response.writeHead(statusCode,[headers]);
response.write(data,[encoding])response.end([data], [encoding]);
8、HTTP客服端。http.request, http.get 是http模块提供的作为客服端向HTTP服务器发起请求。
http.ClientRequest 是由http.request或http.get返回产生的对象,表示一个已经产生而且正在进行中的HTTP请求。
http.ClientRequset像http.ServerResponse一样提供了write和end函数,用于想服务器发送请求体,结束一定要用end。
http.ClientResponse与http.ServerRequest相似,提供data,end,close三个事件。

第五章  使用Node.js进行web开发
1、安装npm install -g express.建立工程: express -t ejs microblog.(在这之前可以express -e,安装ejs) cd microblog ; npm install
2、
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;">//test.js</span>
<span class="kwd" style="color:#0088;">var</span><span class="pln" style="color:#000000;"> express </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">require</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'express'</span><span class="pun" style="color:#66660;">)</span>
<span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">...</span>
<span class="kwd" style="color:#0088;">var</span><span class="pln" style="color:#000000;"> app </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> express</span><span class="pun" style="color:#66660;">();</span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px">
<span class="pln" style="color:#000000;">app</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">configure</span><span class="pun" style="color:#66660;">(</span><span class="kwd" style="color:#0088;">function</span><span class="pun" style="color:#66660;">(){</span>
<span class="pln" style="color:#000000;">  app</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">set</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'port'</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> process</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">env</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">PORT </span><span class="pun" style="color:#66660;">||</span><span class="pln" style="color:#000000;"> </span><span class="lit" style="color:#06666;">3000</span><span class="pun" style="color:#66660;">);</span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="pln" style="color:#000000;">  app</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">use</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">express</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">bodyParser</span><span class="pun" style="color:#66660;">());</span>
<span class="pln" style="color:#000000;">   </span><span class="pun" style="color:#66660;">...</span>
<span class="pun" style="color:#66660;">});</span>
<span class="pln" style="color:#000000;">app</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">get</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'/'</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> routes</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">index</span><span class="pun" style="color:#66660;">);</span><span class="com" style="color:#8800;">//express的REST风格路由控制。Representational State Transfer表征状态转移</span>
<span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">...</span>
<span class="pln" style="color:#000000;">http</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">createServer</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">app</span><span class="pun" style="color:#66660;">).</span><span class="pln" style="color:#000000;">listen</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">app</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">get</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'port'</span><span class="pun" style="color:#66660;">),</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">function</span><span class="pun" style="color:#66660;">(){</span>
<span class="pln" style="color:#000000;">  console</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">log</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"Express server listening on port "</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">+</span><span class="pln" style="color:#000000;"> app</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">get</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'port'</span><span class="pun" style="color:#66660;">));</span>
<span class="pun" style="color:#66660;">});</span>
</p><div><span class="com" style="color:#8800;">//Express模板的index.js类型。</span></div>
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;">//router.js</span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;">exports.hello = function(req, res) {</span>
<span class="pln" style="color:#000000;"> res</span><span class="pun" style="color:#66660;">.</span><span class="pln" style="color:#000000;">send</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">'The time is '</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">+</span><span class="pln" style="color:#000000;"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln" style="color:#000000;"> </span><span class="typ" style="color:#66066;">Date</span><span class="pun" style="color:#66660;">().</span><span class="pln" style="color:#000000;">toString</span><span class="pun" style="color:#66660;">());</span>
<span class="pun" style="color:#66660;">};</span></p>
3、当你当问任何被两条同样的规则匹配到的路径时,会发现请求总是被前一条路由规则捕获,后面的规则会被忽略。原因是express在处理路由规则时,会优先匹配先定义的路由规则,后面的相同的规则被屏蔽。
4、使用模板引擎、app.set('views, _dirname + '/views');  app.set('view engine', 'ejs');
res.render('index', { title: 'Express' });
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;">//index.ejs</span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;"><h1><%= title %></h1></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;"><p>welcome to <%= title %></p></span></p>
5、片段视图。
在express 3.x Partial被移除了,用include代替。如:
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;">//list.ejs</span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;"> <body></span>
<span class="pln" style="color:#000000;">    </span><span class="pun" style="color:#66660;"><%</span><span class="pln" style="color:#000000;"> include listitem </span><span class="pun" style="color:#66660;">%></span>
<span class="pln" style="color:#000000;">  </span><span class="pun" style="color:#66660;"></</span><span class="pln" style="color:#000000;">body</span><span class="pun" style="color:#66660;">></span></p>
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;">//listitem.ejs</span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="com" style="color:#8800;"><ul><li>hao</li></ul></span></p>
6、Express提供了一个叫做“视图助手”的工具,它的功能是允许在视图中访问一个全局的函数或对象,不用每次调用视图解析时都单独传入。前面的partial就是一个视图助手。
分为静态视图助手和动态视图助手。差别在于静态可以使任何类型对象,包括任意参数函数,但访问到的对象必须是与用户请求无关的。
动态视图助手只能是一个函数,这个函数不能接受参数,但可以访问req和res对象。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值