JavaScript類型轉換(型別轉換)

了解 JavaScript 類型轉換的基礎知識 即使 JavaScript 是一種弱類型語言,您可能需要將值從一種類型轉換為另一種類型。 在 JavaScript 中,我們有以下原始類型: Number String Boolean Symbol 以及對象類型: Object (還有 null 和 undefined,但從它們轉換到其他類型沒有意義) 例如,您可能想要進行以下轉換: 將數字轉換為字符串 將字符串轉換為數字 將字符串轉換為布爾值 將布爾值轉換為字符串 等等。 以下是您可以使用的技巧將一種類型轉換為另一種類型。我將涵蓋最常見的情況。 轉換為字符串 通常,從任何值轉換為字符串通常只需在任何值上調用 toString() 方法,JavaScript 將創建與該類型對應的字符串值。或者,您可以將任何值傳遞給 String() 全局函數。 從數字轉換為字符串 使用 String 全局函數,或者使用數字類型的 toString() 方法: String(10) //"10" (10).toString() //"10" 從布爾值轉換為字符串 使用 String 全局函數或布爾類型的 toString() 方法: String(true) //"true" true.toString() //"true" String(false) //"false" false.toString() //"false" 從日期轉換為字符串 使用 String 全局函數或日期類型的 toString() 方法: String(new Date('2019-01-22')) //"Tue Jan 22 2019 01:00:00 GMT+0100 (Central European Standard Time)" (new Date('2019-01-22'))....

Johnny Five 教程

學習如何使用 JavaScript 與電子設備溝通 Johnny Five 是一個超酷的函式庫,讓我們可以使用 JavaScript 與電子設備進行互動。 像 Arduino 這樣的設備通常是使用 Arduino 語言 進行編程,這是一種針對 C/C++ 的特殊框架。 由於這些電子設備的能力有限,記憶體和處理器速度都很低,其他語言無法直接用於為它們編寫程序。 但是有一種特殊的協議,稱為 Firmata,允許語言與 Arduino 進行交互。 Johnny Five 是一個很棒的函式庫,它允許我們使用 JavaScript 進行交互,尤其是 Node.js。 設置 Arduino 與 Johnny Five 的工作環境 從 http://arduino.cc/en/main/software 下載 Arduino IDE。 打開它,你會看到如下畫面: 將 Arduino 板連接到 USB 連接埠。 前往「工具(Tools)」->「連接埠(Port)」,確保選擇的連接埠是 Arduino 連接的連接埠(在我這裡是 /dev/cu.usbmodem14101)。你應該會有幾個選項,Arduino IDE 應已預先檢測到它。 前往「工具(Tools)」->「開發板(Board)」確保選擇了正確的設備。 在我的案例中,設備是一個兼容 Arduino Uno 的開發板。 然後前往「文件(File)」->「範例(Examples)」->「Firmata」,並選擇 StandardFirmataPlus: 這將加載一個新窗口: 點擊工具欄上的右箭頭圖標編譯並將程序加載到 Arduino 板上: 太好了!現在,在硬件方面,你已經準備好使用 Johnny Five。 Arduino 設備必須保持連接 關於 Johnny Five 和使用 JavaScript/Node....

Johnny Five,如何使用 REPL

本篇文章是Johnny Five系列的一部分。請參閱第一篇文章。 當你使用Johnny Five運行程序時,你會發現在終端中可以使用REPL,REPL是Read-Evaluate-Print-Loop的縮寫。 換句話說,我們可以在這裡編寫命令。 讓我們試著創建一個repl.js文件,其中包含以下代碼: const { Board } = require("johnny-five") const board = new Board() 我將在之前的課程中使用的LCD電路進行操作。 使用node repl.js運行程序: 接下來,我們將在REPL中編寫一些命令。 首先,引入LCD類: const { LCD } = require("johnny-five") 然後從中初始化一個lcd對象: const lcd = new LCD({ pins: [7, 8, 9, 10, 11, 12] }) 現在讓我們向LCD顯示器寫入文本: lcd.print("Hello!") 你會看到一條大消息顯示出來: 因為該命令返回對LCD對象的引用。這是為了讓我們可以連接多個命令,如下所示: lcd.clear().print("Hello!") 如果不運行clear(),則任何新的內容都會附加到已經存在的內容之後。 要在第二行寫入,請調用cursor(1)(默認行是0: lcd.clear().print("Hello from") lcd.cursor(1, 0).print("Johnny-Five!")

Johnny Five,如何與LCD屏幕配合工作

本文是Johnny Five系列文章的一部分。請參閱第一篇文章。 LCD屏幕是一個很酷的組件,因為我們可以用它在各種不同的創意項目中使用。 這個我拿到的是名叫1602A的。 它有16個引腳。我按照以下方式連接它: 引腳1連接到0V 引腳2連接到控制背光的電位器 引腳3連接到5V 引腳4連接到Arduino的引腳7 引腳5連接到0V 引腳6連接到Arduino的引腳8 引腳11連接到Arduino的引腳9 引腳12連接到Arduino的引腳10 引腳13連接到Arduino的引腳11 引腳14連接到Arduino的引腳12 引腳15連接到5V 引腳16連接到0V 電位器有3個腳。中間的腳連接到LCD屏幕,左邊的腳連接到0V,右邊的腳連接到5V。 接線就完成了。 創建一個新的lcd.js文件並載入以下代碼: const { Board, LCD } = require("johnny-five"); const board = new Board(); board.on("ready", function() {}); 現在從LCD類初始化一個新的LCD對象。 確切的初始化程序取決於所使用的顯示器的類型。在我的情況下,是這樣的: const lcd = new LCD({ pins: [7, 8, 9, 10, 11, 12] }); 最後,調用print()方法顯示一個字符串: const { Board, LCD } = require("johnny-five"); const board = new Board(); board.on("ready", function() { const lcd = new LCD({ pins: [7, 8, 9, 10, 11, 12] }); lcd....

Johnny Five,如何點亮一個LED

學習如何使用JavaScript與電子設備進行通訊 本文是Johnny Five系列的一部分。請先看第一篇文章。 首先創建一個文件夾並初始化npm: npm init -y 然後在本地安裝Johnny Five: npm install johnny-five 現在創建一個名為app.js的文件,內容如下: const { Board, Led } = require("johnny-five") const board = new Board() board.on("ready", () => { const led = new Led(13) led.blink() }) 這個程式通過調用new Board()來初始化一個新的開發板。 當開發板準備就緒時,board對象會觸發ready事件,我們可以在回調函數中執行我們的應用程序。 在這個簡單的例子中,我們通過初始化一個新的Led對象在引腳13上初始化一個新的LED,然後使其閃爍(不斷開關)。 Led對象和Board對象是Johnny Five庫提供的許多功能之一。 Arduino Uno開發板上的13號引腳是連接到內置LED的引腳。 現在運行node app.js來執行程序: 你應該可以看到LED不斷開關! 你也可以通過將負極引腳連接到GND(0V),將正極引腳連接到引腳13,以連接一個真實的LED: 注意我使用了一個電阻器來限制LED通過的電流量。 要停止運行程序,請按兩次ctrl-C:

Johnny Five:從設備接收輸入

本文是 Johnny Five 系列的一部分。 請參閱第一篇文章。 在本文中,我將使用 Johnny Five 從電子設備獲取信息。 具體而言,我想使用水位傳感器來判斷咖啡的剩餘量,以便在程序設計師的工作中,當咖啡不足時能重新加滿杯子。 這是傳感器的圖片: 我們將連接一個小電路以獲取此數據,並使用 Johnny Five 將此數據傳送到我們的 Node.js 應用程序中。 該傳感器有 3 根引腳。一個是 GND(0V),一個是 VCC(5V),另一個是類比數據輸出。 將標記為 - 的引腳連接到 GND,+ 連接到 5V,並將 S 連接到類比引腳 A0。 這是電路圖: 現在,我們創建一個名為 sensor.js 的文件,內容如下: const { Board, Sensor } = require("johnny-five") const board = new Board() board.on("ready", () => { const sensor = new Sensor("A0") sensor.on("change", function () { console.log(this.value) }) }) 每當通過傳感器傳來的數據變化時,我們將在控制台上看到打印出來: 我在 sensor 對象上使用了 on() 方法來監視所有更改。...

JSONP 指南

JSONP 是從第三方服務器加載數據的一種方式,可以繞過同源策略。 默認情況下,你無法從不是當前域名和端口的地方加載 JSON 文件並在應用程序中使用它。 你可能將應用程序從 localhost:8080 服務,但API是由另一個運行在 localhost:2001 上的Node.js應用程序提供的。 或者你可能希望在瀏覽器中訪問一些以JSON格式提供的公共API。 使用API是一個常見需求,在瀏覽器中,由於安全原因,由於同源策略,默認情況下必須禁止這種行為,以防止可能的問題。 JSONP 在 CORS 存在之前誕生。如今,CORS 是一種更(也是唯一一種?)明智的方法來解決這個問題,但你也需要了解 JSONP,因為它可能在你的情況下更好。此外,自 JSONP 誕生以來,一些安全問題已被發現,所以你需要了解使用 JSONP 的所有 安全問題。 JSONP 僅支持 GET HTTP 方法,因此它比CORS要不那麼強大。 它是如何工作的 服務器必須支持 JSONP,例如 Express 中可以使用 Response.jsonp() 方法,它類似於 Response.json() ,但處理 JSONP 回調: res.jsonp({ username: 'Flavio' }) 在客戶端,你可以加載指定了回調函數的端點: <script src="http://localhost:2001/api.json?callback=theCallbackFunction"></script> 回調函數必須是全局的,它將接收 JSON 數據: const theCallbackFunction = (data) => { console.log(data) } jQuery 通過在其 ajax() 方法中封裝 JSONP,簡化了此方法: $.ajax({ url: 'http://localhost:2001/api.json', dataType: 'jsonp', success: (data) => { console....

JSON介紹

JSON是一種儲存和交換資料的優良格式,廣泛用於JavaScript但不僅限於此-了解一切有關它的知識! JSON是一種文件格式,用於儲存和交換資料。 資料以鍵值對的形式儲存。 JSON格式易於人類閱讀,非常適合手動編輯。 這是一個JSON字符串的例子: { "name": "Flavio", "age": 35 } 從這個小片段中,你可以看到鍵被包裹在雙引號中,冒號分隔鍵和值,值可以是不同的類型。 鍵值對之間用逗號分隔。 在JSON文件中,間距(空格、制表符、換行)不重要。上述示例等同於 {"name": "Flavio","age": 35} 或 {"name": "Flavio","age": 35} 但像一直以來,格式良好的資料更容易理解。 JSON誕生於2002年,由於易於使用和靈活性而迅速流行起來,儘管它起源於JavaScript,但很快就擴展到其他編程語言中。 它在ECMA-404標準中有所描述。 JSON字符串通常存儲在.json文件中,並以application/json的MIME類型在網絡上傳輸。 數據類型 JSON支援一些基本數據類型: Number:不帶引號的任意數字 String:用引號包裹的任意字符集 Boolean:true或false Array:用方括號包裹的值列表 Object:用大括號包裹的鍵值對集合 null:表示空值的單詞null 其他任何數據類型都必須被序列化為字符串(然後反序列化)才能存儲在JSON中。 在JavaScript中編碼和解碼JSON ECMAScript 5於2009年在JavaScript標準中引入了JSON對象,該對象提供了JSON.parse()和JSON.stringify()方法,此外還有其他功能。 在JavaScript程序中使用JSON字符串之前,必須將其解析並轉換為JavaScript可以使用的數據。 JSON.parse()將JSON字符串作為參數,並返回包含解析後JSON的對象: JSON.parse(string) JSON.stringify()將JavaScript對象作為參數,並返回表示其為JSON的字符串: JSON.stringify(object) JSON.parse()還可以接受可選的第二個參數,稱為解析器函數。您可以使用它來進行解析並執行任何自定義操作: JSON.parse(string, (key, value) => { if (key === 'name') { return `Name: ${value}` } else { return value } }) 嵌套對象 您可以使用嵌套對象來組織JSON文件中的數據: { "name": { "firstName": "Flavio", "lastName": "Copes" }, "age": 35, "dogs": [ { "name": "Roger" }, { "name": "Syd" } ], "country": { "details": { "name": "Italy" } } } 用於處理JSON的在線工具...

keeping-business-small

對於有意保持小型企業的看法 很長一段時間以來,我一直非常有意識地追求一件事:我希望擁有一個成功的獨立企業。 為什麼我想要一個獨立企業呢? 1.我不想再有老闆。 2.我想按照自己的方式生活。 3.沒有人能夠告訴我何時工作。 什麼才能讓它成為一個「成功的」獨立企業呢? 實現上述所有目標。 由於我已經達到了這個階段,保持成功意味著保持現狀: 我不想讓它變得比我想要的更大。 我不想讓它在我身上強加其他的生活方式。 我不想讓它告訴我何時工作。 同時,希望增加企業產生的年度收入。 需要注意的是,我對這個領域常用的詞語進行了修改,即ARR(年度經常收入)。這是我書中的另一個重點:我不想有任何形式的經常收入。我追求這種收入已經很長一段時間了,超過十年,有時我還是會受到它的影響,但「R」即經常這一點對你的獨立企業而言有一個影響。 它剝奪了靈活性。它意味著你有一個不斷增長的客戶群體,他們使用你設定的經常性事項,並對此提出要求。這是一個需要不斷正常運行、提供客戶關愛和支持的網絡應用產品。 對我來說,這是一個具有要求性的業務。在某個時刻,你「需要」全職承包商,否則這件事情將消耗你的生活。想象一下,多年來你不斷做著同樣的事情。 這也是為什麼我過去並沒有製作SaaS應用程序,而主要專注於(失敗的)產品。我希望有自由,有一天可以說:「我想朝一個完全不同的方向發展」。有幾次我嘗試過SaaS的路線,我沿途都看到了一些徵兆。 很多企業被出售,這很好,創始人通常有一段時間不做任何事情,然後又跳到一個新點子上。但這也不是我想做的。 理想情況下,我永遠不想賣掉我的企業。 有一天,我的會計師問我對未來的計劃是什麼。 我告訴他,計劃就是終身繼續做我正在做的事情。 可以自由地擁有一個想法,創造一些東西,致力於工作並將其推出。 很久以前我就發現,當我感到被迫去做某事時,我對它失去了所有的熱情。 而沒有激情,我還不如洗盤子,就像我16或17歲時洗的那樣。至少當我完成這些事情時,我一天也就結束了。 我不想創建一個會吞噬我的企業。 我想看著日曆特意地說:「這就是我將全身心地努力付出500%的能量,全情投入其中的時間」,設定我的截止日期,努力工作,努力創造某些事情,並將其付諸實踐。 在我現在的階段,我通過我的以應對與社群為基礎的在線課程實現了這個目標。 讓我最喜歡的是,我的工作能夠幫助人們。我不僅僅是節省他們的時間,或使他們節省金錢或賺錢,這三個是創建產品時可以涉足的很好的領域。線上課程實際上可以改變人們的生活。 這也是一個巨大的責任和特權。我並不認為我能夠生活著創建線上課程是理所當然的。這是我能找到的最好的使命。

Laravel入門

本教程是Laravel手冊的一部分,從https://flaviocopes.com/access/下載。 要開始使用Laravel,您需要在計算機上設置PHP環境。 您可以通過各種方式來完成這一點。 在繼續之前,請刪除過去可能完成的任何舊版本PHP安裝。具體方法取決於您如何在計算機上安裝PHP。希望您沒有這樣做,我們可以繼續。 在macOS上,使用Homebrew(如果尚未安裝,請先安裝Homebrew),然後使用以下命令安裝PHP和Composer: brew install php composer (可能需要一些時間) 安裝完成後,您應該能夠運行php -v命令獲取安裝的PHP版本(對於composer -v也是如此): 現在,您可以進入計算機上為開發保留的文件夾。例如,我在我的主目錄中有一個dev文件夾。 在該文件夾中,運行以下命令: composer create-project laravel/laravel first 以在名為first的文件夾中創建一個新項目。 現在進入該文件夾並運行php artisan serve: cd first php artisan serve 在Laravel中,您將經常使用php artisan <某些命令>,因為它可以為您做很多有用的事情。例如,我們將使用它來“建立”模型,而無需手動創建文件。 打開瀏覽器,您將看到Laravel應用程序的默認歡迎畫面: 如果您在達到此階段時遇到問題,官方文檔有很好的指南,涵蓋了macOS、Linux和Windows。 在VS Code中打開新創建的項目文件夾。 這應該是文件結構: 當您在這裡時,我建議您安裝以下擴展: Laravel Extra Intellisense Laravel Artisan Laravel Blade Snippets PHP tools for VS Code 我們有一堆文件夾和一堆文件。 您要查看的第一個文件是.env文件。 它包含了許多用於您的應用程序的配置選項,稱為環境變量: 例如,在文件的此部分,您可以看到我們設置了應用程序名稱、調試標記、URL、與日誌記錄、數據庫連接、電子郵件發送等相關的配置設置。 一個非常有用的文件夾是config。這是config/app.php文件的示例: 該文件夾中的每個文件都包含許多可以設置的配置選項,並且都有很好的文檔。 配置文件和.env文件之間的區別是什麼?.env中的環境變量可以根據部署的情況進行更改,例如,在開發期間,您可以啟用調試,而在生產服務器上不希望這樣做。 config文件中的某些選項(如上面所示)使用env() Laravel輔助函數來獲取環境變量。 而直接存儲在config文件夾中的選項是“適用於所有環境”的硬編碼選項。 在查看更改任何配置選項之前,讓我們修改在瀏覽器中看到的內容。 打開routes文件夾,您將看到4個文件。打開web.php: 這是顯示Laravel應用程序示例主頁的代碼: 我們對/相對URL(http://127.0.0.1:8000/**/)發出了請求,這意味著“主頁”。 此URL在routes/web.php文件中處理,該文件包含專用於處理來自瀏覽器的HTTP請求的路由器。 在此文件中,如屏幕截圖所示,我們告訴Laravel在使用GET HTTP方法(在瀏覽器中打開頁面時使用的方法)時,當有人訪問/ URL時返回welcome視圖: Route::get('/', function () { return view('welcome'); }); 為此,我們使用了view() Laravel輔助函數,它知道在哪裡找到welcome視圖,因為Laravel使用一套約定。...