How to use JS to achieve front-end and back-end isomorphism
This time I will show you how to use JS to achieve front-end and back-end isomorphism. What are the precautions for using JS to achieve front-end and back-end isomorphism? The following is a practical case, let’s take a look.
What is front-end and back-end isomorphism
Clear three concepts: "Back-end rendering" refers to the traditional ASP, Java or PHP rendering mechanism; "Front-end rendering" It refers to using JS to render most of the content of the page, which represents the now popular SPA single-page application; "isomorphic rendering" refers to the front-end and back-end sharing JS, and It feels like the front-end is really a toss-up. Separation of front-end and back-end was popular before. Why do we need to make front-end and back-end isomorphism now? The reason is that the popular SPA front-end single-page application is relatively heavy and requires a lot of files to be loaded for the first visit. The first load is too slow and the user needs to wait for the front-end to render the page. It is not conducive to SEO and caching, and has certain development thresholds. By reusing templates and JS files, the front-end and back-end isomorphism allows a code to run on the server and browser at the same time. For the first rendering, use nodejs to render the page, and then use SPAProject Introduction
This front-end and back-end isomorphic project is mainly divided into two parts, one is a rendering server based on koa2, and the other is based on native JS and zepto Front-end SPA. The project is characterized by not using frameworks such as vue and react, low threshold, fast development speed, easy to get started, relatively lightweight, and the core router part only has about a hundred lines of code. It is suitable for scenarios where there are few page interactions and infrequent changes, and can effectively improve performance and loading speed.Front-end part
The core of the front-end part is the routing part. The specific implementation can be based on history API or hash. There are many implementations on the Internet. This time we mainly talk about the architectureThe front-end part adopts MVC hierarchical structure.
Form such as:
import control from '../control' //路由的构造函数支持传入渲染函数,路由的全局名称,路由跳转前调用的钩子 router = new Router(render,'ROUTER',beforeFn) router.get('/page/a', control.pageA')The main purpose of the control layer is to load the rendering template and rendering data shared with the backend, and run the page function after rendering the page Form such as:
let control = { pageA(req,res) { //webpack的动态加载,代码分割功能 import(/* webpackChunkName: "pageA" */'script/pageA').then(module=> { // 检测该页面是否已有服务器渲染好,是的话直接运行module.default //否则加载模板和数据进行渲染,最后再调用页面函数 if(this.needRender(module.default)) { //加载数据时访问的地址就是当前准备渲染的页面地址,只是加上了json=1的参数 loadData('pageA').then(data => res.render(xtpl,data,module.default)) } } } // 捕捉webpack热更新,让他只进行相当于页面跳转的操作而不是刷新页面 if(module.hot) { module.hot.accept(['script/pageA'], () => { control[ROUTER.req.currentControl].call(ROUTER,null,ROUTER.res) }) }The view layer is the template. The xtpl template is used here. It supports rendering the page in both the server environment and the front-end environment.
The form of the page function
page The function requires the use of es6 module writing and the on-demand loading function of webpackexport default () => { window.addEventListener('scroll', fn) //页面函数支持返回一个卸载函数,在页面离开的时候会被调用 //主要用于内存的释放,定时器的清除,事件监听的移除等等 return function () { window.removeEventListener('scroll', fn) } }I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website! Recommended reading:
How to declare JS variables var,let.const
How to use vue to calculate properties and methods Listener
The above is the detailed content of How to use JS to achieve front-end and back-end isomorphism. For more information, please follow other related articles on the PHP Chinese website!

The power of the JavaScript framework lies in simplifying development, improving user experience and application performance. When choosing a framework, consider: 1. Project size and complexity, 2. Team experience, 3. Ecosystem and community support.

Introduction I know you may find it strange, what exactly does JavaScript, C and browser have to do? They seem to be unrelated, but in fact, they play a very important role in modern web development. Today we will discuss the close connection between these three. Through this article, you will learn how JavaScript runs in the browser, the role of C in the browser engine, and how they work together to drive rendering and interaction of web pages. We all know the relationship between JavaScript and browser. JavaScript is the core language of front-end development. It runs directly in the browser, making web pages vivid and interesting. Have you ever wondered why JavaScr

Node.js excels at efficient I/O, largely thanks to streams. Streams process data incrementally, avoiding memory overload—ideal for large files, network tasks, and real-time applications. Combining streams with TypeScript's type safety creates a powe

The differences in performance and efficiency between Python and JavaScript are mainly reflected in: 1) As an interpreted language, Python runs slowly but has high development efficiency and is suitable for rapid prototype development; 2) JavaScript is limited to single thread in the browser, but multi-threading and asynchronous I/O can be used to improve performance in Node.js, and both have advantages in actual projects.

JavaScript originated in 1995 and was created by Brandon Ike, and realized the language into C. 1.C language provides high performance and system-level programming capabilities for JavaScript. 2. JavaScript's memory management and performance optimization rely on C language. 3. The cross-platform feature of C language helps JavaScript run efficiently on different operating systems.

JavaScript runs in browsers and Node.js environments and relies on the JavaScript engine to parse and execute code. 1) Generate abstract syntax tree (AST) in the parsing stage; 2) convert AST into bytecode or machine code in the compilation stage; 3) execute the compiled code in the execution stage.

The future trends of Python and JavaScript include: 1. Python will consolidate its position in the fields of scientific computing and AI, 2. JavaScript will promote the development of web technology, 3. Cross-platform development will become a hot topic, and 4. Performance optimization will be the focus. Both will continue to expand application scenarios in their respective fields and make more breakthroughs in performance.

Both Python and JavaScript's choices in development environments are important. 1) Python's development environment includes PyCharm, JupyterNotebook and Anaconda, which are suitable for data science and rapid prototyping. 2) The development environment of JavaScript includes Node.js, VSCode and Webpack, which are suitable for front-end and back-end development. Choosing the right tools according to project needs can improve development efficiency and project success rate.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.
