server
Introduction
We wrote the page before, if you want to show it to yourself, you can open it directly with the browser. If you want to show it to someone else, send it to him. But if there are too many people watching, it is impossible to send one by one at this time. So set up a server. This server is on the public network. As long as you put your website on this server, others can access it through the public network. (Have a domain name: a domain name refers to an id of your server on the public network)
Simply put, a server is a machine used to provide services.
We divide the server into different servers according to the purpose of the server. We are learning about the simplest web server.
NodeJS server
Before, there was a server.js file, which was a simple NodeJS server.
HTTP protocol
Introduction
Browser: chrome browser, Internet Explorer, Firefox, edge browser, etc. These are some apps. Their level is the same as qq.
Server: NodeJS server.
The browser makes a request for content on the server. The specification used between them is called the HTTP protocol.
The HTTP protocol specifies how browsers make requests.
The HTTP protocol dictates how the server should respond.
HTTP request
If the HTTP protocol is a class. Then the HTTP request is the instantiated object.
An HTTP request consists of 4 parts: the first line of the request, the request header, the request blank line, and the request body
Request first line:
Request header:
Request blank line: just a blank line with no content. The function is to separate the request header from the request body.
Request body: none
URL
Introduction
URL refers to Uniform Resource Locator.
When we want to visit a certain website. The first step is to enter the URL. The URL is just a URL.
Demo:
https://login.taobao.com/member/login.jhtml?from=taobaoindex&f=top&style=&sub=true&redirect_url=https%3A%2F%2Fi.taobao.com%2Fmy_taobao.htm%3Fspm%3Da21bo.2017.1997525045.1.5af911d9IjloSn#aaa
As above, it is a URL string.
A complete URL contains: protocol, domain name, port, pathName, search(? + query), hash
When the browser enters the URL and presses enter
When you enter the URL string in the browser's address bar and press Enter, the browser parses the URL. According to the rules of the HTTP protocol, it decides which domain name to send to.
1 parsed into URL object 2 Get the domain name and resolve it into IP address 1 Get the corresponding from the browser cache ip address 2 Get the corresponding from the system cache ip address 3 Get the corresponding from the route cache ip address 4 from DNS get the corresponding ip address 3 According to the obtained ip address issued HTTP ask 4 the request arrives at the server 5 Server Reply Link Established 6 Server processing returns data according to the link 7 disconnect 8 The browser gets the data and starts rendering 9 encountered during rendering link Label, script Label, img Label, video Label, audio Tags and other external chain tags will be re-issued HTTP ask.
cache
When the request sent by the browser is consistent with the previously requested data URL, the previously requested data is used instead of resending the request.
Features of NodeJS
Introduction
Official website: http://nodejs.org
Introduction:
NodeJS is not a language, it is a development platform. The language used is JS.
NodeJS is a lightweight, efficient, non-blocking I/O development environment based on the Chrome V8 engine.
NPM is the world's largest ecosystem of open source libraries.
hello world
There is a JS file:
console.log("hello world");
single thread
When executing a task, there is only one thread to execute. This is called "single thread".
Non-blocking I/O
I: input input O:output output
Memory runs fast, and disk spins relatively slowly. If data is fetched from memory to disk, this is called "exporting" from memory. It's called "input" in turn. The speed is based on the rotational speed of the disk. Is the thread waiting at this point? If you wait, it is called blocking I/O. Do not wait, called non-blocking I/O.
event driven
Because of non-blocking I/O. Causes the thread to leave, and subsequent tasks after the I/O is completed cannot continue to execute. When the I/O completes, an event is fired. The event driver continues execution. This is called "event driven".
Small case
There is a clinic ( NodeJS server) There is a doctor in the clinic(single thread) in the clinic N nurses (memory) There are warehouses (disks) in the clinic 10 patients came one day (sent from the front end HTTP ask). The doctor deals with the symptoms of the first patient. (The processing flow includes: diagnosis, prescription, medication, doctor's order) Diagnosis, the doctor can do it immediately, and the prescribing doctor can do it immediately. Prescribing medicine is by the nurse going to the warehouse to get the medicine. Is an I/O operate. The doctor will not wait for the nurse to come back with the medicine, and cannot give the doctor's order immediately. Instead, deal with the next patient's symptoms immediately. Continue the above process. At this time, a certain nurse came back. Nurses don't pull doctors over to prescribe. Instead, nurses line up. The doctor continues to process, and the nurse's doctor's order for the corresponding patient is executed only after the nurse is processed.
Modularity in NodeJS
There are two types of modules in NodeJS, one is the core module. One is a third-party module.
core module
The so-called core module refers to the module that comes with NodeJS.
List on the left side of the official website
third-party modules
The so-called third-party modules refer to non-core modules.
define module
In NodeJS, a JS file is a module.
Expose function
module.exports = sum; // Exposed is the sum function module.exports.sum = sum; // What is exposed is an object, the sum property of the object is the sum function exports.sum = sum; // Ditto
import module
Import third-party modules:
In NodeJS, also use the require function to import content
Demo:
// Introduce exposed functions in b.js var b = require("./b.js");
It is not necessary to write the .js suffix when importing, because NodeJS is sensitive to js files.
import core module
The core module has only one name and is in memory, so the path cannot be written. Just write the name.
require("http");
node_modules folder
This folder is dedicated to storing third-party modules of node.
Its features:
1 As long as a third-party module is placed in this folder, it can be imported like a core module 2 It can exist in a multi-level directory. When looking for a file, it will first look for the file in the same level. node_modules If there is, go in and look for it; if not, go to the previous level to find out if there is node_modules up
NodeJS server
HTTP module
This module is used to create HTTP server
Introduce:
var http = require("http");
Call API:
var server = http.createServer(handler);
handler: The response function called when a request is sent to this server.
Listening port number:
server.listen(3000);
request
The handler in the createServer method is a function that has two parameters.
req and res.
Req represents the front-end request object, and all front-end data is on this object.
Important properties:
req.url URL string req.method Method method string (uppercase)
response
Res represents the back-end response object, and how to respond to the data is performed by the method of the object.
Important properties and methods:
res.setHeader Used to set response headers res.end used to end the request and return data can only receive strings and buffer res.statusCode Used to set the response status code
at last
The author publishes good articles every week for everyone to learn, and everyone is welcome to pay attention.
WeChat search [Front-end daily skills] Follow the official account, writing is not easy, I hope to like 👍️ add favorites ❤️ and forward.