Difference: 1. In the global environment, this in node points to global, while in the browser this points to window; 2. DOM and BOM can be directly or indirectly manipulated in the browser, but DOM will not be manipulated in node. and BOM; 3. The browser cannot perform file operations and other functions in nodejs.
The operating environment of this tutorial: windows7 system, nodejs version 12.19.0, DELL G3 computer.
Just recently, a friend asked me about this issue. Let me briefly talk about the difference between the node environment and the browser that I understand. Experts, please skip it.
1. The point of this in the global environment
In node, this points to global and in the browser, this points to window. This is why there is a point in underscore. A root is defined at the beginning;
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. and many 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 . . .
Of course, there are many differences between node and browsers, and I will add them at any time.
[Recommended learning: "nodejs tutorial"]
The above is the detailed content of What is the difference between nodejs and browser. For more information, please follow other related articles on the PHP Chinese website!