Difference: 1. In node this points to global, but in the browser this points to window; 2. In most cases, js in the browser operates the DOM directly or indirectly, and does not Manipulate DOM in node; 3. Node provides more convenient components for reading and writing files, but there are no components in the browser.
The operating environment of this tutorial: windows10 system, nodejs version 12.19.0, Dell G3 computer.
1. The point of this in the global environment
In node, this points to global while browsing This in the browser points to the window, which is why a root is defined in underscore;
var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global || this;
And a lot of APIs are encapsulated under the window in the browser, such as alert, document, location, history, etc. There are a lot more. We cannot use xxx(); or window.xxx(); in the node environment. Because these APIs are browser-level encapsulation, they are not available in JavaScript. Of course, node also provides many node-specific APIs.
2. js engine
In browsers, different browser manufacturers provide different browser kernels, and browsers rely on these kernels to interpret and fold the js we write. . But considering the small differences between different kernels, we need corresponding compatibility. Fortunately, there are some excellent libraries to help us deal with this problem, such as jquery, underscore, etc.
Nodejs is based on Chrome's JavaScript runtime, which means that it actually encapsulates the Google V8 engine (applied to the Google Chrome browser). The V8 engine executes Javascript very quickly and has very good performance.
NodeJS does not provide simple encapsulation and then provide API calls. If that were the case, then it would not be as popular as it is now. Node has optimized some special use cases and provided alternative APIs to make V8 run better in non-browser environments. For example, in a server environment, processing binary data is usually essential, but Javascript does not support this enough. Therefore, V8.Node adds the Buffer class to process binary data conveniently and efficiently. Therefore, Node not only simply uses V8, but also optimizes it to make it more powerful in various environments.
The js engine has been fixed, and it also supports Shenma compatibility.
3. DOM operation
In most cases, js in the browser operates the DOM directly or indirectly (some virtual DOM libraries and frameworks). Because the code in the browser mainly works in the presentation layer. But node is a server-side technology. There is no front page, so we will not operate the DOM in node.
4. I/O reading and writing
Unlike browsers, we need to read and write files like other server-side technologies. Nodejs provides more convenient components. And the browser (to ensure compatibility) has a lot of trouble if it wants to directly open a local image in the page (don't tell me it's not simple, relative path... Just try it and you will know, or find a library Either it is a binary stream, or it is uploaded and the network address is displayed. Otherwise, why would anyone build a js library?), and all of this node is done with one component.
5. Module loading
JavaScript has a characteristic, that is, the native API that does not provide package references executes all the things to be loaded at once. Here is what we need to see Thank you for your closure skills. All the things used are together, there is no divide and conquer, and there is no logic or reusability. If the page or website is simple, of course we can use some AMD and CMD js libraries (such as requireJS and seaJS) to get it done. In fact, many large websites do this.
The CMD module loading API is provided in nodeJS. If you have used seaJS, you should get started quickly.
Node also provides npm, a package management tool, which can more effectively and conveniently manage our drinking libraries
Of course, ES6 on the browser side also has this addition, I believe it will be better in the future . . .
Recommended learning: "nodejs video tutorial"
The above is the detailed content of What is the difference between node environment and browser environment?. For more information, please follow other related articles on the PHP Chinese website!