摘要:在瀏覽器中的全局對象是對象。程序是由事件驅(qū)動執(zhí)行的單線程模型,也不例外。不斷執(zhí)行響應(yīng)事件的函數(shù),直到?jīng)]有任何響應(yīng)事件的函數(shù)可以執(zhí)行,就退出了。方法此方法可以在下一次事件響應(yīng)中執(zhí)行代碼。它會返回一個對象,告訴我們文件的詳細信息。
global
JS在瀏覽器中的全局對象是window對象。在Node.js環(huán)境中,全局對象則叫global。我們可以用它來區(qū)分當前JavaScript的執(zhí)行環(huán)境:
if(typeof(window)==="undefined"){ console.log("node.js"); }else{ console.log("browser"); }process
process是Node.js提供的一個對象,它代表當前Node.js的進程。
JavaScript程序是由事件驅(qū)動執(zhí)行的單線程模型,Node.js也不例外。Node.js不斷執(zhí)行響應(yīng)事件的JavaScript函數(shù),直到?jīng)]有任何響應(yīng)事件的函數(shù)可以執(zhí)行,Node就退出了。
nextTick方法此方法可以在下一次事件響應(yīng)中執(zhí)行代碼。
fs模塊fs模塊是Node.js的內(nèi)置模塊,是負責處理讀寫文件的。它同時提供了異步和同步方法。
異步和同步異步是在JS執(zhí)行IO操作時,無需等待執(zhí)行結(jié)果,而是傳入回調(diào)函數(shù)后,繼續(xù)執(zhí)行下面的代碼,以jQuery的getJSON()為例:
$.getJSON("http://example.com/ajax",function(data){ console.log("IO結(jié)果返回后執(zhí)行……"); }); console.log("不等待IO結(jié)果直接執(zhí)行后續(xù)代碼‘);
而同步則是線形的,需要等待IO操作返回結(jié)果后,再執(zhí)行后續(xù)代碼:
var data=getJSONSync("http://example.com/ajax");
同步代碼更少,但是異步在實際的用戶體驗更好。
異步讀文件以下是一個異步讀取文本文件的實例:
‘use strict"; var fs=require("fs"); fs.readFile("sample.txt","utf-8",function(err,data){ if(err){ console.log(err); }else{ console.log(data) } })
要注意的是,sample.txt必須在當前的目錄之下,且文件的編碼格式為utf-8。
如果我們要讀取的是二進制文件呢?下面是一個讀取圖片的例子:
"use strict"; var fs = require("fs"); fs.readFile("sample.png", function (err, data) { if (err) { console.log(err); } else { console.log(data); console.log(data.length + " bytes"); } });
當讀取二進制文件時,不傳入文件編碼(如utf-8)時,data會返回一個Buffer對象。
這里提一下Buffer對象,它是Node處理二進制數(shù)據(jù)的一個接口,也是Node原生的全局對象,可以直接使用,不需要require(‘buffer’)。它的作用類似于數(shù)組。同步讀文件
同步讀文件相比異步讀文件,只是在readFile上加了一個sync,看下面的例子:
"use strict" var fs=require("fs"); try{ var data=fs.readFileSync("sample.txt","utf-8"); console.log(data); } catch(err){ //錯誤信息 }
如果發(fā)生錯誤,只能通過try...catch捕獲。
寫文件通過fs.writeFile()實現(xiàn)。
"use strict" var fs=require("fs"); var data="Hello Node.js!"; fs.writeFile("output.txt",data,function(err){ if(err){ console.log(err); }else{ console.log("ok"); } });
和讀文件相同,writeFile()也有一個同步方法writeFileSync()。
"use strict"; var fs=require("fs"); var data="hello Node.js"; fs.writeFileSync("output.txtx",data);stat
可以通過fs.stat()獲取文件大小、創(chuàng)建時間等信息。它會返回一個stat對象,告訴我們文件的詳細信息。
"use strict"; var fs=require("fs"); fs.stat("sample.txt",function(err,stat){ if(err){ console.log(err); }else{ // 是否是文件: console.log("isFile: " + stat.isFile()); // 是否是目錄: console.log("isDirectory: " + stat.isDirectory()); if (stat.isFile()) { // 文件大小: console.log("size: " + stat.size); // 創(chuàng)建時間, Date對象: console.log("birth time: " + stat.birthtime); // 修改時間, Date對象: console.log("modified time: " + stat.mtime); } } });
同樣,它也有一個同步函數(shù)statSync()。
"use strict"; var fs=require("fs"); var stats=fs.statSync("sample.txt"); console.log(stats.isFile()); //true
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110124.html
摘要:本節(jié)將學習是如何利用形成一套完整的前端工作流模式的。你也可以使用下面命令來強制安裝所有模塊,不管該模塊之前是否安裝過由于國內(nèi)墻的原因,使用安裝會非常緩慢,慢到想切,不過還好,我們可以使用淘寶提供的國內(nèi)鏡像進行下載。 本節(jié)將學習 Laravel 是如何利用 Sass, NPM, Gulp形成一套完整的前端工作流模式的。 一、句法強大的樣式表Sass Sass 是一種可用于編寫CSS的語言...
摘要:樣式通過標簽包裹,默認是影響全局的,如需定義作用域只在該組件下起作用,需在標簽上加,如要引入外部文件,首先需給項目安裝依賴包,打開,進入項目目錄,輸入回車。 showImg(https://segmentfault.com/img/remote/1460000013235090); (一)安裝node.js 首先需要安裝node環(huán)境,可以直接到中文官網(wǎng)http://nodejs.cn/...
摘要:編程書籍的整理和收集最近一直在學習深度學習和機器學習的東西,發(fā)現(xiàn)深入地去學習就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書和文章,隨著不斷的學習,也整理了下自己的學習筆記準備分享出來給大家后續(xù)的文章和總結(jié)會繼續(xù)分享,先分享一部分的 編程書籍的整理和收集 最近一直在學習deep learning深度學習和機器學習的東西,發(fā)現(xiàn)深入地去學習就需要不斷的去提高自己算法和高數(shù)的能力然后...
閱讀 2159·2021-11-22 15:22
閱讀 1299·2021-11-11 16:54
閱讀 1829·2021-09-23 11:32
閱讀 3021·2021-09-22 10:02
閱讀 1781·2019-08-30 12:59
閱讀 1095·2019-08-29 16:27
閱讀 630·2019-08-29 13:21
閱讀 2470·2019-08-28 17:57