欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker快速部署主流腳本語言JavaScript的全過程

 更新時間:2023年02月04日 11:39:30   作者:小鵬linux  
JavaScript是目前所有主流瀏覽器上唯一支持的腳本語言,這也是早期JavaScript的唯一用途,下面這篇文章主要給大家介紹了關(guān)于Docker快速部署主流腳本語言JavaScript的相關(guān)資料,需要的朋友可以參考下

1. 關(guān)于JavaScript

JavaScript是目前所有主流瀏覽器上唯一支持的腳本語言,這也是早期JavaScript的唯一用途。Node.js的出現(xiàn),讓服務端應用也可以基于 JavaScript進行編寫。

1.1 JavaScript 的歷史 

JavaScript 最初被稱為 LiveScript,由 Netscape(Netscape Communications Corporation,網(wǎng)景通信公司)公司的布蘭登·艾奇(Brendan Eich)在 1995 年開發(fā)。在 Netscape 與 Sun(一家互聯(lián)網(wǎng)公司,全稱為“Sun Microsystems”,現(xiàn)已被甲骨文公司收購)合作之后將其更名為了 JavaScript。

之所以將 LiveScript 更名為 JavaScript,是因為 JavaScript 是受 Java 的啟發(fā)而設計的,因此在語法上它們有很多相似之處 ,JavaScript 中的許多命名規(guī)范也都借鑒自 Java,還有一個原因就是為了營銷,蹭 Java 的熱度。

同一時期,微軟和 Nombas(一家名為 Nombas 的公司)也分別開發(fā)了 JScript 和 ScriptEase 兩種腳本語言,與 JavaScript 形成了三足鼎立之勢。它們之間沒有統(tǒng)一的標準,不能互用。為了解決這一問題,1997 年,在 ECMA(歐洲計算機制造商協(xié)會)的協(xié)調(diào)下,Netscape、Sun、微軟、Borland(一家軟件公司)組成了工作組,并以 JavaScript 為基礎制定了 ECMA-262 標準(ECMAScript)。

第二年,ISO/IEC(國際標準化組織及國際電工委員會)也采用了 ECMAScript 作為標準(即 ISO/IEC-16262)。

1.2 如何運行 JavaScript 

作為一種腳本語言,JavaScript 代碼不能獨立運行,通常情況下我們需要借助瀏覽器來運行 JavaScript 代碼,所有 Web 瀏覽器都支持 JavaScript。

除了可以在瀏覽器中執(zhí)行外,也可以在服務端或者搭載了 JavaScript 引擎的設備中執(zhí)行 JavaScript 代碼,瀏覽器之所以能夠運行 JavaScript 代碼就是因為瀏覽器中都嵌入了 JavaScript 引擎,常見的 JavaScript 引擎有:

  • V8:Chrome 和 Opera 中的 JavaScript 引擎;
  • SpiderMonkey:Firefox 中的 JavaScript 引擎;
  • Chakra:IE 中的 JavaScript 引擎;
  • ChakraCore:Microsoft Edge 中的 JavaScript 引擎;
  • SquirrelFish:Safari 中的 JavaScript 引擎。

1.3 JavaScript 的特點 

JavaScript 具有以下特點:

1) 解釋型腳本語言

JavaScript 是一種解釋型腳本語言,與 C、C++ 等語言需要先編譯再運行不同,使用 JavaScript 編寫的代碼不需要編譯,可以直接運行。

2) 面向?qū)ο?/p>

JavaScript 是一種面向?qū)ο笳Z言,使用 JavaScript 不僅可以創(chuàng)建對象,也能操作使用已有的對象。

3) 弱類型

JavaScript 是一種弱類型的編程語言,對使用的數(shù)據(jù)類型沒有嚴格的要求,例如您可以將一個變量初始化為任意類型,也可以隨時改變這個變量的類型。

4) 動態(tài)性

JavaScript 是一種采用事件驅(qū)動的腳本語言,它不需要借助 Web 服務器就可以對用戶的輸入做出響應,例如我們在訪問一個網(wǎng)頁時,通過鼠標在網(wǎng)頁中進行點擊或滾動窗口時,通過 JavaScript 可以直接對這些事件做出響應。

5) 跨平臺

JavaScript 不依賴操作系統(tǒng),在瀏覽器中就可以運行。因此一個 JavaScript 腳本在編寫完成后可以在任意系統(tǒng)上運行,只需要系統(tǒng)上的瀏覽器支持 JavaScript 即可

2. 關(guān)于Node.js

Node.js自2009年發(fā)布,使用Google Chrome瀏覽器的V8引擎,采用事件驅(qū)動,性能優(yōu)異。同時還提供了很多系統(tǒng)級API,如文件操作、網(wǎng)絡編程等。

2.1 Node.js簡介 

JavaScript 誕生于 1995 年,幾乎是和互聯(lián)網(wǎng)同時出現(xiàn);Node.js 誕生于 2009 年,比 JavaScript 晚了 15 年左右。

在 Node.js 之前,JavaScript 只能運行在瀏覽器中,作為網(wǎng)頁腳本使用,為網(wǎng)頁添加一些特效,或者和服務器進行通信。有了 Node.js 以后,JavaScript 就可以脫離瀏覽器,像其它編程語言一樣直接在計算機上使用,想干什么就干什么,再也不受瀏覽器的限制了。

Node.js 不是一門新的編程語言,也不是一個 JavaScript 框架,它是一套 JavaScript 運行環(huán)境,用來支持 JavaScript 代碼的執(zhí)行。用編程術(shù)語來講,Node.js 是一個 JavaScript 運行時(Runtime)。

現(xiàn)在的 JavaScript 除了用于 Web 前端編程(網(wǎng)頁編程),還能干很多事情,比如:

  • 開發(fā)網(wǎng)站后臺,這原本是 PHP、Java、Python、Ruby 等編程語言擅長的;
  • 開發(fā) GUI 程序,也就是我們常說的帶界面的電腦軟件,比如 QQ、360、迅雷等;
  • 手機 APP,包括 Android APP、iOS APP;
  • CLI 工具,也就是不帶界面的命令行程序。

2.2 Node.js 的組成 

Node.js 運行時主要由 V8 引擎、標準庫和本地模塊組成,尤其是本地模塊的多少,從底層決定了 Node.js 功能的強弱。

1) V8 引擎 

V8 引擎就是 JavaScript 解釋器,它負責解析和執(zhí)行 JavaScript 代碼。

V8 引擎借鑒了 Java 虛擬機和 C++ 編譯器的眾多技術(shù),它將 JavaScript 代碼直接編譯成原生機器碼,并且使用了緩存機制來提高性能,這使得 JavaScript 的運行速度可以媲美二進制程序。

2) 本地模塊 

Node.js 集成了眾多高性能的開源庫,它們使用 C/C++ 語言實現(xiàn),比如:

模塊說明
libuv一個跨平臺的、基于事件驅(qū)動的異步 I/O 庫。但是 libuv 不僅限于 I/O,它還提供了進程管理、線程池、信號處理、定時器等其它功能。

Linux 中一切皆文件,這里的 I/O 不僅僅包括文件讀寫,還包括數(shù)據(jù)庫讀寫、網(wǎng)絡通信(socket)等。
nmpNode.js 包管理器,可以下載包、安裝包、卸載包、更新包、上傳包等。
http_parser一款由C語言編寫的輕量級 HTTP 解析器,用以支持 Web 應用開發(fā)。
zlib工業(yè)級的數(shù)據(jù)壓縮/解壓模塊,Nodejs 借助 zlib 來創(chuàng)建同步、異步或者流式的壓縮/解壓接口。
OpenSSL該模塊提供了經(jīng)過嚴密測試的許多加密/解密功能,現(xiàn)代 Web 依賴這些功能來實現(xiàn)安全性,比如 SSL 協(xié)議和 https 協(xié)議。
c-ares異步 DNS 查詢和解析庫。

Node.js 直接在計算機上運行 JavaScript 代碼,并且要賦予 JavaScript 強大的能力,所以它的本地模塊和瀏覽器中的運行時有很多大區(qū)別,甚至說幾乎沒有什么關(guān)聯(lián)。Node.js 幾乎完全拋棄了瀏覽器,自己從頭構(gòu)建了一套全新的 JavaScript 運行時。

3) 標準庫 

本地模塊使用 C/C++ 編寫,而 Node.js 面向 JavaScript 開發(fā)人員,所以必須要封裝本地模塊的 C/C++ 接口,提供一套優(yōu)雅的 JavaScript 接口給開發(fā)人員,并且要保持接口在不同平臺(操作系統(tǒng))上的一致性。

這套 JavaScript 接口,就是 Node.js 標準庫。標準庫是否優(yōu)雅和強大,決定了 Node.js 的易用性,直接影響 Node.js 的市場表現(xiàn)。

3. 用Docker搭建和使用Node.js環(huán)境 

Node.js擁有3種官方鏡像:node:<version>、node:onbuild、node:slim。

其中常用的是帶有版本標簽的,以及帶有onbuild標簽的node鏡像。 首先,在Node.js項目中新建一個Dockerfile:

FROM node:4-onbuild
EXPOSE 8888

然后,新建server.js文件,內(nèi)容如下:

'use strict';
var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect();
app.use('/', serveStatic('.', {'index': ['index.html']}));
app.listen(8080);
console.log('MyApp is ready at http://localhost:8080');

之后,通過npm init命令來新建node項目所必須的package.json文件

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (node) node
version: (1.0.0)
description: node-sample
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/faxi/Docker/js/node/package.json:
{
    "name": "node",
    "version": "1.0.0",
    "description": "node-sample",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "",
    "license": "ISC"
}
Is this ok? (yes) yes

下面使用docker build指令構(gòu)建node鏡像:

$ docker build -t node-image .

最后,創(chuàng)建并運行node容器:

$ docker run -it -P node-image
npm info it worked if it ends with ok
npm info using npm@2.15.1
npm info using node@v4.4.3
npm info prestart node@1.0.0
npm info start node@1.0.0
> node@1.0.0 start /usr/src/app
> node server.js
MyApp is ready at http://localhost:8080

此時可以使用瀏覽器查看到MyApp應用的服務頁面。

首先,使用docker ps指令查看端口綁定情況:

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b6f666d4808 node-image "npm start" xxxago Up xx 0.0.0.0:32771->8888/tcp node-container

如果只需要運行單個node腳本的容器,則無需通過Dockerfile構(gòu)建鏡像,可以使用以下指令:

$ docker run -it --rm --name my-running-script -v "$(pwd)":/usr/src/myapp -w /usr/src/myapp node:0.10 node your-daemon-or-script.js

也可以參考node官方提供的最佳實踐:

https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md

總結(jié)

到此這篇關(guān)于Docker快速部署主流腳本語言JavaScript的文章就介紹到這了,更多相關(guān)Docker快速部署JavaScript內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker使用Prune命令清理none鏡像

    Docker使用Prune命令清理none鏡像

    本文主要介紹了Docker使用Prune命令清理none鏡像,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Docker安裝和基礎用法 Docker入門教程第二篇

    Docker安裝和基礎用法 Docker入門教程第二篇

    這篇文章主要介紹了Docker安裝和基礎用法,Docker入門教程第二篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Docker-compose的安裝和設定詳細步驟

    Docker-compose的安裝和設定詳細步驟

    這篇文章主要介紹了Docker-compose的安裝和設定的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • docker-compose部署etcd集群的實現(xiàn)步驟

    docker-compose部署etcd集群的實現(xiàn)步驟

    本文主要介紹了docker-compose部署etcd集群的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 基于Harbor構(gòu)建docker私有倉庫的方法

    基于Harbor構(gòu)建docker私有倉庫的方法

    這篇文章主要介紹了Harbor構(gòu)建docker私有倉庫的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 使用Docker容器運行Mysql實戰(zhàn)記錄

    使用Docker容器運行Mysql實戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于使用Docker容器運行Mysql的相關(guān)資料,助大家更好的理解和學習使用docker,感興趣的朋友可以了解下,需要的朋友可以參考下
    2023-09-09
  • docker rm -f 容器id 無效的問題解決

    docker rm -f 容器id 無效的問題解決

    當遇到“Error response from daemon: cannot stop container: d208b8055fd0: permission denied”錯誤,表示缺乏停止Docker容器的權(quán)限,本文就來介紹一下如何解決,感興趣的可以了解一下
    2024-09-09
  • 為運行中的docker容器設置時區(qū)

    為運行中的docker容器設置時區(qū)

    本文主要介紹了為運行中的docker容器設置時區(qū),主要介紹了2種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05
  • Docker容器化部署嘗試——多容器通信(node+mongoDB+nginx)

    Docker容器化部署嘗試——多容器通信(node+mongoDB+nginx)

    這篇文章主要介紹了Docker容器化部署嘗試——多容器通信(node+mongoDB+nginx),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • docker安裝clickhouse過程詳解

    docker安裝clickhouse過程詳解

    這篇文章主要為大家介紹了docker安裝clickhouse過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論