# Node.js學習與實作 ###### tags: `RD1` :::spoiler 目錄 [TOC] ::: ### `Socket.io` #### 什麼是`socket.io`? Socket.io是一個類庫,可以在瀏覽器與服務器之間實現實時、雙向、基於事件的通信。 [socket.io](https://socket.gitbook.io/docs/) ### Docker建置現有的Node.js [nodedock](https://nodedock.io/#/) 1. 安裝express ``` yarn add express ``` 2. 並將start腳本添加到package.json: ```json "scripts": { "start": "node app.js" } ``` 3. 在項目根目錄上克隆Nodedock: ``` git clone https://github.com/nodedock/nodedock.git ``` 4. 將nodedock中的beanstalkd、certbot、node和workspace等四份檔案的Dockerfile ```dockerfile -FROM phusion/baseimage:latest (上面這行改成下面這行) +FROM phusion/baseimage:bionic-1.0.0 ``` 5. 在app.js的資料夾 ```javascript const server = require('http').createServer(app); ``` 改成createServer() ```javascript server.listen(9000,()=>{ console.log("server running at 127.0.0.1"); }); ``` 改成server.listen(9000) 6. 在main.js的資料夾 ```javascript const url = 'http://127.0.0.1'; ``` 7. 在終端機重啟docker ``` ./nodedock/restart.sh ``` ### 抓取當前時間(不使用moment.js) ```javascript time=new Date() // 2020-10-07T01:46:56.481Z ``` #### 轉換成字串形式 ```javascript time = String(new Date()); // Wed Oct 07 2020 01:46:56 GMT+0000 (Coordinated Universal Time) ``` #### 更改時區 ```javascript time = new Date().toLocaleString('en-US', { timeZone: 'Asia/Taipei' }); // 10/7/2020, 9:46:56 AM ``` #### 擷取字串 ```javascript time = time.substr(11, 5); time = time.substring(11, 16); // 9:46 ``` :::info 注意:如果沒做型態轉型成String會無法做字串處理的動作 ::: ### moment.js ``` npm install moment ``` new Date()抓到現在時間,再加上自訂的時間格式 ```javascript var moment = require('moment'); moment(new Date()).format('MM-DD-YYYY'); ``` #### 調整時區 [moment.js/timezone](https://momentjs.com/timezone/docs/) ``` npm install moment-timezone ``` tz後填入欲更改的時區位置 ```javascript var moment = require('moment-timezone'); moment().tz("Asia/Taipei").format(); ``` ### 參考資料 [Node.js 是什麼?跟 JavaScript 有什麼關係 ](https://tw.alphacamp.co/blog/node-js-and-javascript) [js字串處理](http://programmermagazine.github.io/201307/htm/article2.html) [js日期時間](https://pjchender.github.io/2017/12/27/js-javascript-date-time-method-%E6%97%A5%E6%9C%9F%E6%99%82%E9%96%93/) [moment.js](https://ithelp.ithome.com.tw/articles/10208995) [Node.js - Express + MySQL](https://dotblogs.com.tw/explooosion/2016/07/18/010601) [Docker - 容器化 Node.js express(Mac)](https://dotblogs.com.tw/explooosion/2018/09/15/194754) [socket.io中emit和on的用法](https://www.itread01.com/content/1541081191.html) [聊天室入門實戰(node,socket.io實現)--第一章(實現登入群聊功能)](https://blog.csdn.net/neuq_zxy/article/details/76794551) [聊天室入门实战(node,socket.io实现)--第二章(美化,图片发送,登录提示,认证)](https://blog.csdn.net/NEUQ_zxy/article/details/76836799) [聊天室入门实战(node,sockte.io实现)--第三章(在线成员列表及头像显示,单聊)](https://blog.csdn.net/NEUQ_zxy/article/details/76998100) [chat](https://github.com/neuqzxy/chat) [nodedock](https://github.com/nodedock/nodedock) [fix](https://github.com/laradock/laradock/commit/c9819508c1bfb7abc7826fa9437f92aa3c7c7b21) [npm mysql](https://www.npmjs.com/package/mysql) [專題菁英班 - JavaScirpt爬蟲專案](https://hsueh-jen.gitbooks.io/webcrawler/content/) [Redis新手指南:在node中使用redis](https://segmentfault.com/a/1190000015882650) [《Redis入門指南》一5.4 Node.js與Redis](https://itw01.com/F2VYEJX.html)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up