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