RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
加载javascript,加载中

js加载速度慢怎么解决?

解决办法:换一个js包含的方式,让javascript加载速度倍增。

公司主营业务:网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出宝兴免费做网站回馈大家。

把通常加载方式:

script src="xxxx.js"/script

改变成:

script type="text/javascript"document.write("scr"+"ipt src=\"xxx.js\"/sc"+"ript")

/script

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

javascript异步加载几种方式总结

方法一:也叫Script DOM Element

方法二:onload时的异步加载

方法三:其他方法

由于JavaScript的动态性,还有很多异步加载方法: XHR Injection、 XHR Eval、 Script In Iframe、 Script defer属性、 document.write(script tag)。

可以参考一下网页链接

如何在WordPress上正确加载Javascript和CSS

现在许多WordPress网站都开始讲要正确加载 jQuery、Javascript 和 CSS 到你的WordPress网站。今天来一篇更详细讲解如何使用WordPress官方推荐的方式来加载脚本/ CSS的文章。

有两种常用的 add_action 钩子可以加载 脚本和CSS到WordPress:

init: 确保始终为您的网站头部加载脚本和CSS(如果使用home.php,index.php或一个模板文件),以及其他“前端”文章、页面和模板样式。

wp_enqueue_scripts:“适当”的钩子方法,并不总是有效的,根据你的WordPress设置。

下面的所有例子都在WordPress多站点模式、WordPress 3.4.2 通过测试(如果不支持后续版本,请留言告知)

加载外部 jQuery 库和主题自定义的脚本、样式

下面这个例子在 add_action 钩子中使用 init。使用 init 有两个原因,一是因为我们正在注销WordPress默认的jQuery库,然后加载谷歌的jQuery库;二是确保在WordPress的头部就加载脚本和CSS。

使用if ( !is_admin() )是为了确保这些脚本和css只在前端加载,不会再后台管理界面加载。

/** Google jQuery Library, Custom jQuery and CSS Files */

function myScripts() {

wp_register_script( 'google', '' );

wp_register_script( 'default', get_template_directory_uri() . '/jquery.js' );

wp_register_style( 'default', get_template_directory_uri() . '/style.css' );

if ( !is_admin() ) { /** Load Scripts and Style on Website Only */

wp_deregister_script( 'jquery' );

wp_enqueue_script( 'google' );

wp_enqueue_script( 'default' );

wp_enqueue_style( 'default' );

}

}

add_action( 'init', 'myScripts' );

加载WP默认 jQuery 库和主题自定义的脚本、样式

第3行:使用 array(‘jquery’) 是为了告诉 WordPress 这个 jquery.js 是依赖WordPress 的jQuery库文件,从而使 jquery.js 在WordPress jQuery库文件后加载。

/** Add Custom jQuery and CSS files to a Theme */

function myScripts() {

wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' );

wp_register_style( 'default', get_template_directory_uri() . '/style.css' );

if ( !is_admin() ) { /** Load Scripts and Style on Website Only */

wp_enqueue_script( 'default' );

wp_enqueue_style( 'default' );

}

}

add_action( 'init', 'myScripts' );

加载 print.css 到你的WordPress主题

第 3 行:最后的 ‘print’是媒体屏幕调用,确保 print.css 在网站的打印机中的文件加载时才加载。

/** Adding a Print Stylesheet to a Theme */

function myPrintCss() {

wp_register_style( 'print', get_template_directory_uri() . '/print.css', '', '', 'print' );

if ( !is_admin() ) { /** Load Scripts and Style on Website Only */

wp_enqueue_style( 'print' );

}

}

add_action( 'init', 'myPrintCss' );

使用 wp_enqueue_scripts 替换 init

如果你要在文章或页面加载唯一的脚本,那就应该使用 wp_enqueue_scripts 替换 init。使用 wp_enqueue_scripts 仅仅只会在前台加载脚本和CSS,不会在后台管理界面加载,所以没必要使用 !is_admin() 判断。

使用 is_single() 只在文章加载脚本或CSS

第 3 行的 # 替换为文章的ID就可以让脚本和css只加载到那篇文章。当然,如果直接使用 is_single() (不填ID),就会在所有文章加载脚本和CSS。

/** Adding Scripts To A Unique Post */

function myScripts() {

if ( is_single(#) ) { /** Load Scripts and Style on Posts Only */

/** Add jQuery and/or CSS Enqueue */

}

}

add_action( 'wp_enqueue_scripts', 'myScripts' );

使用 is_page() 只在页面加载脚本或CSS

第 3 行的 # 替换为页面的ID就可以让脚本和css只加载到那个页面。当然,如果直接使用 is_single() (不填ID),就会在所有页面加载脚本和CSS。

/** Adding Scripts To A Unique Page */

function myScripts() {

if ( is_page(#) ) { /** Load Scripts and Style on Pages Only */

/** Add jQuery and/or CSS Enqueue */

}

}

add_action( 'wp_enqueue_scripts', 'myScripts' );

使用 admin_enqueue_scripts 加载脚本到后台

这个例子将在整个后台管理界面加载脚本和CSS。这个方法不推荐用在插件上,除非插件重建了整个后台管理区。

第 10 行使用 admin_enqueue_scripts 替换了 init 或 wp_enqueue_scripts

第 5、6 行,如果你要自定义后台管理区,你可以需要禁用默认的WordPress CSS调用。

/** Adding Scripts To The WordPress Admin Area Only */

function myAdminScripts() {

wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' );

wp_enqueue_script( 'default' );

//wp_deregister_style( 'ie' ); /** removes ie stylesheet */

//wp_deregister_style( 'colors' ); /** disables default css */

wp_register_style( 'default', get_template_directory_uri() . '/style.css', array(), '', 'all' );

wp_enqueue_style( 'default' );

}

add_action( 'admin_enqueue_scripts', 'myAdminScripts' );

加载脚本和CSS到WordPress登录界面

第 6 行:我无法弄清楚如何在在登录页面注册/排序 CSS文件,所以这行手动添加样式表。

第 10-14行:用来移除WordPress默认的样式表。

/** Adding Scripts To The WordPress Login Page */

function myLoginScripts() {

wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' );

wp_enqueue_script( 'default' );

?

link rel='stylesheet' id='default-css' href='?php echo get_template_directory_uri() . '/style.css';?' type='text/css' media='all' /

?php }

add_action( 'login_enqueue_scripts', 'myLoginScripts' );

/** Deregister the login css files */

function removeScripts() {

wp_deregister_style( 'wp-admin' );

wp_deregister_style( 'colors-fresh' );

}

add_action( 'login_init', 'removeScripts' );

加载脚本和CSS到WordPress插件

WordPress插件加载脚本和CSS也是常见的。主要的不同之处在于文件的 URL。主题使用的是 get_template_directory_uri ,而插件应该用 plugins_url ,因为文件是从插件目录进行加载的。

从插件加载脚本和CSS

这个例子将在整个网站前端加载脚本和CSS。

/** Global Plugin Scripts for Outside of Website */

function pluginScripts() {

wp_register_script( 'plugin', plugins_url( 'jquery.js' , __FILE__ ), array('jquery'), '' );

wp_register_style( 'plugin', plugins_url( 'style.css' , __FILE__ ) );

if ( !is_admin() ) { /** Load Scripts and Style on Website Only */

wp_enqueue_script( 'plugin' );

wp_enqueue_style( 'plugin' );

}

}

add_action( 'init', 'pluginScripts' );

从插件加载脚本和CSS到后台管理区

如果你需要在整个后台管理区加载脚本和CSS,就使用 admin_enqueue_scripts 替换 init。

/** Global Plugin Scripts for The WordPress Admin Area */

function pluginScripts() {

wp_register_script( 'plugin', plugins_url( 'jquery1.js' , __FILE__ ), array('jquery'), '' );

wp_enqueue_script( 'plugin' );

wp_register_style( 'plugin', plugins_url( 'style1.css' , __FILE__ ) );

wp_enqueue_style( 'plugin' );

}

add_action( 'admin_enqueue_scripts', 'pluginScripts' );

从插件加载脚本和CSS到插件设置页面

例子只会加载所需的脚本和CSS到插件设置页面,不会在管理区的其他页面加载。

第 3 行:自定义 page= 后面的值为你的插件设置页面

/** Adding Scripts On A Plugins Settings Page */

function pluginScripts() {

if ( $_GET['page'] == "plugin_page_name.php" ) {

wp_register_script( 'plugin', plugins_url( 'jquery.js' , __FILE__ ), array('jquery'), '' );

wp_enqueue_script( 'plugin' );

wp_register_style( 'plugin', plugins_url( 'style.css' , __FILE__ ) );

wp_enqueue_style( 'plugin' );

}

}

add_action( 'admin_enqueue_scripts', 'pluginScripts' );

将 jQuery 库移动到页脚

你不能将WordPress默认的jQuery 库移动到页面底部,但是你可以将自定义的jQuery 或其他外部jQuery 库(比如Google的)移动到底部。不要将CSS移动到页面底部。

第 3、4 行:最后的 ‘true’告诉WordPress在页面底部加载这些脚本。

/** Moves jQuery to Footer */

function footerScript() {

wp_register_script('jquery', (""), false, '', true );

wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', false, '', true );

if ( !is_admin() ) { /** Load Scripts and Style on Website Only */

wp_deregister_script( 'jquery' );

wp_enqueue_script( 'jquery' );

wp_enqueue_script( 'default' );

}

}

add_action( 'init', 'footerScript' );

根据不用的用户角色和功能加载jQuery和CSS

如果你的网站有作者、编辑和其他管理员,你可能需要通过 jQuery 来为他们显示不同的信息。你需要使用 current_user_can 确定登录的用户的角色和功能 。

下面三个例子中,如果用户已经登录,将在整个网站加载这些脚本和CSS。使用 !is_admin() 包装 enqueue_script 确保只在前台加载,或者在 add_action 使用 admin_enqueue_scripts 就可以确保只在后台管理区加载。

为可以“编辑文章”的管理员加载脚本和CSS

只对超级管理员和网站管理员生效

/** Add CSS jQuery based on Roles and Capabilities */

function myScripts() {

if ( current_user_can('edit_posts') ) {

/** Add jQuery and/or CSS Enqueue */

}

}

add_action( 'init', 'myScripts' );

为所有登录用户加载脚本和CSS

/** Admins / Authors / Contributors / Subscribers */

function myScripts() {

if ( current_user_can('read') ) {

/** Add jQuery and/or CSS Enqueue */

}

}

add_action( 'init', 'myScripts' );

为管理员以外的已登录用户加载脚本和CSS

/** Disable for Super Admins / Admins enable for Authors / Contributors / Subscribers */

function myScripts() {

if ( current_user_can('read') !current_user_can('edit_users') ) {

/** Add jQuery and/or CSS Enqueue */

}

}

add_action( 'init', 'myScripts' );

最后的提示

上面的很多例子如果使用相同的add_action,就可以被合并成一个单一的函数。

换句话说,您可以使用多个 if 语句在一个函数中分裂了你的脚本和CSS调用,如:if_admin!if_admin,is_page,is_single和current_user_can的,因为每次使用相同的add_action的init。

什么是按需加载javascript实现

其实按需加载不是很难,你只需要2个东西就能办到

一个模块加载器

一些符合模块加载器语法的代码

首先实现一个模块加载器其实并不复杂,不到50行就能办到,但是如果你想要一个功能完善的,可配置,具有完善的生态和社区的模块加载器。在几年前是requirejs和seajs,现在是browserify和webpack。webpack和browserify在模块加载方面相比requirejs和seajs更高级的地方是在node环境下自动进行依赖分析。

让我们来实现个简单的兼容commonJS规范的模块加载器吧。

(function (global) {

var factoryMap = {};

var resMap = {};

var moduleMaps = {};

window.resMap = resMap;

// define函数定义

define = function (id, factory) {

factoryMap[id] = factory;

}

// require函数定义

require = function (id) {

var mod = moduleMaps[id] = {

exports: {}

}

var factory = factoryMap[id];

if (!factory) {

throw 'Cannot find module `' + id + '`';

}

var ret = factory.apply(mod, [require, mod.exports, mod]);

if (ret) {

mod.exports = ret;

}

return mod.exports;

}

})(this);

对于这样的模块加载器你就得这样来用。

// 模块1 依赖 模块二的内容

define('module1', function (require, exports, module) {

// console.log(1);

var module2 = require('module2');

var module3 = require('module3');

var module5 = require('module5');

var module6 = require('module6');

console.log('module1 -- module2', module2);

console.log('module1 -- module3', module3);

console.log('module1 -- module5', module5);

console.log('module1 -- module6', module6);

module.exports = {

moduleName: 'module1'

}

})

// 模块二 依赖 模块三的内容

define('module2', function (require, exports, module) {

var module6 = require('module6');

console.log('module2 -- module6', module6);

module.exports = {

moduleName: 'module2'

}

})

// 模块三

define('module3', function (require, exports, module) {

// console.log('3');

var module4 = require('module4');

var module5 = require('module5');

var module2 = require('module2');

console.log('module3 -- module5', module5);

console.log('module3 -- module2', module2);

console.log('module3 -- module4', module4);

module.exports = {

moduleName: 'module3'

}

})

define('module4', function (require, exports, module) {

var module6 = require('module6');

console.log('module4 -- module6', module6);

module.exports = {

moduleName: 'module4'

}

});

define('module5', function (require, exports, module) {

var module2 = require('module2');

var module6 = require('module6');

console.log('module5 -- module2', module2);

console.log('module5 -- module6', module6);

module.exports = {

moduleName: 'module5'

}

})

define('module6', function (require, exports, module) {

module.exports = {

moduleName: 'module6'

}

})

require('module1');

可以把所有代码放到浏览器里面实验一下。。。

前端加载javascript脚本有几种方式

script的src属性引入脚本地址

script标签直接写脚本

Html5的Worker也可以引入脚本

其它的方式,一般都是利用第1,2方法的。

望采纳!

如何正确加载Javascript和CSS

看你是 选择同步加载还是异步加载

同步的话实在 页面加载的时候就加载 文件 使用 link 和 script 标签 设置其src 就行 ,

如果js代码中有依赖关系, 则加载js代码 要严格按照依赖的顺序。

异步加载 可以动态创建一个script 标签 设置其src 然后把该元素 添加进dom树就行了。

如果要执行其中的代码。一定要等加载完成后才能执行。 可以在src 后面添加 callback=cab ;

然后调用 window.cab(){} 执行回调


文章标题:加载javascript,加载中
网址分享:http://lswzjz.com/article/dsdsicd.html