Today, just an old friend chatted up the jQuery source code. He didn't understand the source code. I had a learning and communication attitude and explained the core realization to him. (as if he had been pigeon for a long time).

By the way, which CDN service provider is looking for a jQuery file to open? The 1.2.3 version I use here is for example. The latest version is almost the same, with only two or three changes. Https://

Source code analysis

17-20 elements Pass the selector and return the init method of your own new. It is estimated that you haven't used it either. $() The second parameter is omitted here.

 Var jQuery = window.jQuery = function (selector) {
return new jQuery.prototype.init (selector);}

26-27 elements This is why it is always a global variable to mount to a window object because of the beginning of $.

 / / Map the jQuery namespace to the '$' one
window.$= jQuery;

36-547 elements Eliminate the core of retention that we do not need. Init Method, the jQuery instance and the selector are judged internally. Here we ignore and simplify.

 JQuery.fn = jQuery.prototype = {
init: function (selector) {
var nodes = document.querySelectorAll (selector); 
for (VaR, 
for) = =; one hundred thousand;

549 elements In the last paragraph, the jQuery prototype chain is passed to the prototype of the init method under the jQuery prototype. Looking back at the new code, it is clear and clear.

 JQuery.prototype.init.prototype = jQuery.prototype;

Complete implementation

Adding functionality to the jQuery prototype is very close to the first version of jQuery. Here I am a simple implementation. Text () Method

 Var jQuery= function (selector) {
return new jQuery.fn.init (selector); 

jQuery.fn = jQuery.prototype = {
init:; (

jQuery.fn) = = (()); (0); (},}; (},}, "}", "}," "(") ";"


Actually, the core is not complicated. I like it very much. I think most of my functions are implemented by plug-ins. The ingenious design and convenience of the tools themselves.

On the traditional page production, jQuery used a very comfortable shuttle, but the appearance of MVVM changed the way of thinking. We only need to pay attention to business logic, do not need to manually operate DOM, do not need to pay attention to the synchronization of data status, and ease the project management.

If there are simple needs on a single page, jQuery is still useful, MVVM can only be added trouble.

I feel so good lately.

TX Hongkong is like a bomb? Since the record is still considered to move into the domestic 8

The old version of the pagoda, which is used before the panel, is still in use. It plans to backup the site and reset the server. A few days ago, it used docker to configure instances in the house virtualization device. The php+nginx site can use the configuration of this instance uniformly. Alpine-nginx-php7

After reading the last article, two months ago, wow, I spent more than a month at home.

What do you want to do at home? Sleep, play games, watch movies, write code, read books, participate in activities, spell models, pick up trash, exercise properly, and organize your room.

The approximate time allocation is as follows
 QQ screenshot 20190603202936.png

Look at millet Bracelet every day almost 10 hours of sleep time, steam collectors game to buy and play? Of course, it's a game of hand travel. The simple and fast way to play in the wilderness is really good. There are four fixed map scenes and a map of activities. The fixed map play can be launched in the time frame. The new activities will fine tune the scene objects and add some specific playing methods. The reward mechanism of the team is also very clever. Unless you are the countdown of 123, there will be rewards. Each match is similar to the qualifying match. The victory will win the trophy (the personal individual cup and the total trophy), the total trophy will only accumulate all the time, failure will only reduce the personal trophy of the hero, and it will be poisonous when playing for a long time.

- reading the remainder part -

Sort out some of the latest gadgets.

You can see that there are two buttons (get verification code, login) two boxes (enter the phone number, enter the verification code).

So we have the following thing (no concrete function, just look at the structure).

<div class= "login-wrapper" >
<div class= "title-bar" > login </div>
<div class= "wrapper phone-wrapper" >
<span >
<span "wrapper" > mobile phone number, "mobile phone", "mobile phone", "mobile phone", "mobile phone", "mobile phone", "phone", "password", "password", "password", "password", "authentication", "authentication code", "password", "password", "password", "password", "password", "password", "password", "password", "login".

At this time, you can start writing logic. It is also a simple analysis. Login needs to click, get the verification code need to click and countdown seconds, that is, dynamically modify the text, experience a good check can limit the number of mobile phone number, the number of verification code.

That's almost like this.

 "Title-bar" > login </div>
<div class= "wrapper phone-wrapper" >
<span, ">
<span", "mobile", "mobile", "mobile", "mobile". <template>
<div class= "login-wrapper" >
<div class= The number of 
code: '/ / input box verification code 
codeText:' get the verification code ', / / countdown display text 
timingBoard: 60, / countdown 
timer: null / / timer, used for countdown verification code}}, 
methods: {
loginCode () {}, / / get the verification code 
login () {} / / login 
changePhone () {} / / check cell phone number 
changeCode () {} / / check the length of the verification code 

With these, it is enough for you to implement a basic mobile phone login interface. If you need full code, please click below. Gist links

Complete code is read: Https://

To tell you the truth, I haven't seen API for such a long time. Vue rediscovered my blog these days. Vue.directive It looks great.

Always see here. Vue.use (ElementUi) Where to use Vue.use (Axios) It has always been at the level of application, and I find that the consumption of markdown parsing examples is a little too large. It may be a lot easier to process directives directly.

Describe the process briefly.

The components that render the article will query whether there is a corresponding article in the local record during the lifecycle of the installation. If there is no request, the request will be searched online, otherwise 404.
The article is for the content of markdown, considering that front-end processing can be directly resolved (after all, the front-end performance is over 233), so as to reduce the burden of logical processing on the back end and consistency.
The markdown parser is used. Marked The completion logic is as follows


import Vue from'vue'
import App from'./App'
import markdown from'./markdown';} / / injection of markdown resolver, (()) = (=).

Integrated marked makes plug-in form exposure


import marked from'marked'
import ('highlight.js/styles/atom-one-dark.css') 

marked.setOptions ({
renderer: new marked.Renderer ()), 
pedantic: false, 
pedantic:, false, e, R, D, R, D, R, D, R, D, C, C, R, R, R, R, R, R, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, etc.

Use on labels V-markdown instructions

 Interface = function (), {
return new new ({}}) = ({}}) =} {} (}) {}}, {}} {}}, {}}, {}}, {}}, {}}, or finding local articles = {}}, (= {}} (=) > {}; this is an interface for searching for articles; {}); (404); //Test.vue

<div v-if= "isNotFound" >404</div>
<div v-else v-markdown= "article" ></div>

const, this is a search article. }

return res; {}}, 
mounted () {/ / ID to find articles 
let a = this.handlerArticle (123); 

if (a = = = 404) {/ / jump to error page}} / / processing loading
this.isNotFound = false; = =}; / / save content directly to variable

Complete code is read: Https://

Rubbed the student discount, bought a Ali cloud server, 5M bandwidth to foreign lines to reduce the probability of packet loss is not bad, NS online beauty, but it is said that the port service online service is out, I do not know how online quality will be.

Firewall relay chestnut

 Open the IP camouflage 
firewall-cmd --add-masquerade --permanent

# add the port protocol 
firewall-cmd --add-forward-port=port= transfer port: proto=tcp:toport= acid milk port: toaddr= acid yogurt address --permanent
firewall-cmd --add-forward-port=port= transit port: proto=udp:toport= sour milk port: the address of the sour yogurt.

Koolshare Everyone seems to use it all. StarWind V2V Converter This software is used to write the tools in PE.

However, goose can not play these windows tools at MacOS, and search finds. Virtual box The set of commands is really sweet.

VBoxManage --help Everything is new, new, modified, deleted, network adapters, DHCP, shared folders...

.img Transformation .vdi Break away from GUI, shell rush!

 $VBoxManage convertdd openwrt-koolshare-mod-v2.22-r8838-af7317c5b6-x86-64-combined-squashfs.img 1.vdi

A virtual machine turntable is completed, seconds to turn.

This page loaded in 0.000967 seconds