Home Web Front-end JS Tutorial Offline processing of front-end

Offline processing of front-end

Nov 18, 2016 pm 01:28 PM

The offline processing here refers to doing some events offline in advance and not doing them while the application is running

In fact, the offline processing of the front-end can be seen in some tools, such as the background image in CSS, and some CSS tools During packaging processing, if the file size of the image is relatively small, the tool will read the file content and convert it into base64 and put it directly into the css file to reduce http requests.

Similarly, when using string templates, turn the string template into a function in js in advance to avoid generating the corresponding function during runtime

Let’s talk about other offline processing

Offline template Handling

Custom tags

Many front-end frameworks now support the way of writing custom tags, such as element based on vue. Let’s take its inputnumber as an example: http://element.eleme.io/#/en-US/component/input-number

<el-input-number v-model="num1" @change="handleChange" :min="1" :max="10"></el-input-number>
Copy after login

A custom el-input-number tag, the final generated html Yes

<div class="el-input-number">
    <div class="el-input">
        <input type="text" autocomplete="off" class="el-input__inner">
    </div>
    <span class="el-input-number__decrease el-icon-minus is-disabled"></span>
    <span class="el-input-number__increase el-icon-plus"></span></div>
Copy after login

vue will replace the custom tags with the final HTML content. This process is done at runtime. In fact, this process can be handled offline through tools and does not need to be done while the program is running.

String template

String templates can be seen in many front-end pages, and there are many template engines. Take the template method in underscore as an example: https://github.com/jashkenas/underscore/blob/master/underscore.js #L1579, when generating a function, if there is no variable parameter, a with statement will be added. Usually we avoid using it. So is there any way to avoid passing variables and using the with statement? This can also be handled offline. For example, the template is as follows

<%for(var i=0;i<list.length;i++){%>
    <%=list[i].text%><%}%>
Copy after login

We can easily convert it into the following content through tools

<%for(var i=0;i<obj.list.length;i++){%>
    <%=obj.list[i].text%>
<%}%>
Copy after login

This requires the use of tools similar to acorn, but it can definitely be done.

Some students say that this is wrong because the with statement is not running and there is no way to know where the variables in it get their values. Yes, but we can completely agree that all the variables used in the template should be passed explicitly when used

For example, there is a getUser() method on the window before removing the with

var tmpl=&#39;<%=getUser()%>&#39;;
_.template(tmpl,{});
Copy after login

At this time, it can work normally

Pass For offline tool processing, after removing with, the template becomes

var tmpl=&#39;<%=obj.getUser()%>&#39;;
_.template(tmp,{});
Copy after login

. This will no longer work. However, we can agree that everything used in the template should be passed explicitly when calling, thus avoiding some potential problems.

Of course, the best result of offline processing of this template string is to put a function directly there.

Css image processing

In our project, consider the following file structure

|____index.html
|____index.css
|____index.js
Copy after login

We usually package html and css into js files, because js files can be easily modularized. , css is attached to the js file. In this way, when js is loaded on demand, html and css are also loaded on demand, and no special processing is required for them.

Assume that they are finally packaged and the index.js is as follows

var Magix=require(&#39;magix&#39;);
var indexHTML=&#39;<div class="mp-et5-content">...</div>&#39;;
Magix.applyStyle(&#39;mp-ec5&#39;,&#39;.mp-et5-content{color:red}&#39;);
Copy after login

For more information, please refer to the packaging tool https://github.com/thx/magix-combine/issues/15.

The style is turned into a string and placed in the js file.

Let’s look at one thing: when using background images in CSS, in order to achieve best practices, we hope to use webp when supporting the webp suffix, use 2x images on high-definition screens, etc. If we use pure CSS to implement it, we need to write a lot of media queries and generate CSS code.

其实这个事情我们没办法离线处理,但我们可以这样做:书写css仍然是写最基础的背景图,不去考虑webp,2倍图等事情,也不需要写media query之类的。在打包时,把图片这块调用js函数在运行时动态处理

如前面文件结构中的,假设index.css中使用了一个背景图

.title{background-image:url(//cdn/a.png)}
Copy after login

我们打包到js中时,完全可以变成

var Magix=require(&#39;magix&#39;);
var ataptImg=function(img){
  //处理webp 2倍图等
  return img
}
Magix.applyStyle(&#39;mp-ec5&#39;,&#39;.mp-et5-title{background-image:url(&#39;+adaptImg(&#39;//cdn/a.png&#39;)+&#39;}&#39;);
Copy after login

这样可以很方便的处理掉这些事情。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What should I do if I encounter garbled code printing for front-end thermal paper receipts? What should I do if I encounter garbled code printing for front-end thermal paper receipts? Apr 04, 2025 pm 02:42 PM

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

Who gets paid more Python or JavaScript? Who gets paid more Python or JavaScript? Apr 04, 2025 am 12:09 AM

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

Demystifying JavaScript: What It Does and Why It Matters Demystifying JavaScript: What It Does and Why It Matters Apr 09, 2025 am 12:07 AM

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

How to merge array elements with the same ID into one object using JavaScript? How to merge array elements with the same ID into one object using JavaScript? Apr 04, 2025 pm 05:09 PM

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

The difference in console.log output result: Why are the two calls different? The difference in console.log output result: Why are the two calls different? Apr 04, 2025 pm 05:12 PM

In-depth discussion of the root causes of the difference in console.log output. This article will analyze the differences in the output results of console.log function in a piece of code and explain the reasons behind it. �...

How to achieve parallax scrolling and element animation effects, like Shiseido's official website?
or:
How can we achieve the animation effect accompanied by page scrolling like Shiseido's official website? How to achieve parallax scrolling and element animation effects, like Shiseido's official website? or: How can we achieve the animation effect accompanied by page scrolling like Shiseido's official website? Apr 04, 2025 pm 05:36 PM

Discussion on the realization of parallax scrolling and element animation effects in this article will explore how to achieve similar to Shiseido official website (https://www.shiseido.co.jp/sb/wonderland/)...

Is JavaScript hard to learn? Is JavaScript hard to learn? Apr 03, 2025 am 12:20 AM

Learning JavaScript is not difficult, but it is challenging. 1) Understand basic concepts such as variables, data types, functions, etc. 2) Master asynchronous programming and implement it through event loops. 3) Use DOM operations and Promise to handle asynchronous requests. 4) Avoid common mistakes and use debugging techniques. 5) Optimize performance and follow best practices.

How to implement panel drag and drop adjustment function similar to VSCode in front-end development? How to implement panel drag and drop adjustment function similar to VSCode in front-end development? Apr 04, 2025 pm 02:06 PM

Explore the implementation of panel drag and drop adjustment function similar to VSCode in the front-end. In front-end development, how to implement VSCode similar to VSCode...

See all articles