22、JavaScript脚本编写实用指南

JavaScript脚本编写实用指南

在掌握了JavaScript的基础知识后,接下来就可以将这些知识应用到实际的网站脚本开发中。在这个过程中,会遇到一些常见的任务,下面将为大家详细介绍这些任务的实现方法。

1. 外部脚本文件存储脚本

通常可以将脚本代码放在 <script> 元素内,但 <script> 元素有一个可选的 src 属性,它可以引用外部的 .js 文件。 .js 文件就是一个普通的文本文件,用于存放JavaScript代码。例如,引用一个包含表单通用有效性检查例程的 .js 文件:

<script type="text/javascript" src="valform.js"></script>

当 src 属性存在时, <script> 标签内的任何代码都会被忽略。将脚本代码放在 .js 文件中的最大好处是可以在整个网站中轻松重用相同的例程。比如有一个创建翻转按钮的脚本,既可以在各个页面中复制粘贴代码,也可以将代码放在一个 .js 文件中,然后通过 <script src=""></script> 引用。 .js 文件的内容是纯JavaScript代码,不能添加任何标记。

2. 创建新的浏览器窗口

在用户进入网站或执行特定操作时,可能需要打开一个新的浏览器窗口。可以使用JavaScript的 window 对象的 open() 方法来实现,语法如下:

window.open( 'url', 'windowName' [, 'featuresList'] )
  • url :指定要指向的URL的字符串。
  • windowName :给新窗口命名的字符串。
  • featuresList :可选参数,用于指定新窗口的特性。

例如,打开一个新窗口:

window.open( 'http://www.digitalwalk.net/more.html', 'moreWin' );

open() 方法有一个返回值,引用新创建的窗口对象。建议对返回值进行处理,以便正确处理对新窗口的引用。例如:

var moreWindow = window.open( 'http://www.digitalwalk.net/more.html', 'moreWin' );
moreWindow.document.write( 'Peek-a-boo. I am writing this from a different window' );

注意,不要将 windowName 参数留空,因为不同浏览器可能会有不同的结果。如果只是打开一个普通的新窗口,也可以不使用脚本,通过在 <a> 链接上使用 target="_blank" 属性来实现。 window.open() 的真正强大之处在于其可选的特性列表,通过这个参数可以指定新窗口打开时的外观。特性列表是一个逗号分隔的字符串,包含一些或所有以下特性的名值对:

参数 作用
Status 显示或隐藏窗口底部的状态栏
Toolbar 显示或隐藏标准浏览器工具栏(如后退和前进按钮)
Location 显示或隐藏地址/URL框
menubar 显示或隐藏菜单栏
directories 显示或隐藏标准浏览器目录按钮
resizable 允许或阻止用户调整窗口大小
scrollbars 如果文档大于窗口,启用或禁用滚动条
height 指定窗口的高度(像素)
width 指定窗口的宽度(像素)
top 指定窗口左上角的y坐标
left 指定窗口左上角的x坐标

高度、宽度、顶部和左侧参数分配像素值,其余参数分配值为1表示启用或显示该特性,值为0表示禁用或隐藏该特性。例如:

var myWin = window.open( 'second.html', 'secWin', 'left=20,top=10,width=400, height=250,toolbar=1,resizable=0,menubar=0,location=0' );

这个例子中,打开一个显示 second.html 网页的新窗口,窗口显示在浏览器的20, 10坐标处,大小为400 x 250像素。

3. 将脚本附加到链接

很多脚本编写者会在将脚本附加到 <a> 链接的点击事件上遇到困惑。虽然HTML允许使用 javascript: 协议将JavaScript命令作为 href 属性值,但更好的做法是使用 onclick 事件处理程序。以下是两种常见的场景:
- 场景一 :想利用 <a> 链接触发脚本,但不想将用户发送到另一个页面。为了执行JavaScript语句并阻止正常的链接功能,添加一个 onclick 处理程序来调用想要执行的函数或语句,并在末尾添加 return false 语句,告诉浏览器忽略 href 值。可以将 href 值设为 # 。例如:

<a href="#" onclick="checkPage();return false">Check now</a>
  • 场景二 :在点击链接时进行条件检查。如果检查通过,浏览器继续访问 href 值指定的页面;如果不通过,用户停留在当前页面。例如:
<a href="continue.html" onclick="checkPage();">Continue</a>

checkPage() 函数对页面进行有效性检查。如果测试通过,返回 true ;如果需要用户注意某些事项,返回 false ,此时 href 值将被忽略。

4. 动态修改网页内容

JavaScript不仅可以对页面上现有的HTML元素做出反应,还可以动态添加内容,而无需刷新页面。除了使用DOM方法(如 createElement() 或 appendChild() ),还可以使用 innerHTML 属性。虽然 innerHTML 属性未得到W3C的认可,但在现代浏览器中得到了广泛支持。 innerHTML 属性允许设置和检索给定元素开始和结束标签之间的HTML内容,也可以处理文本内容或标记。例如,想要在不刷新整个页面的情况下更新 div 、 span 、 p 等元素的内容,可以使用以下代码:

<html>
<head>
<script type="text/javascript">
function refreshText(){
   var txt = document.getElementById( 'userText' ).value;
   document.getElementById('ontheflyupdate').innerHTML = txt;
}
</script>
</head>
<body>
<p>Did you know that the <span id='ontheflyupdate'>cowboy sat on his horse</span>?</p>
<input type='text' id='userText' value='Enter your own text here' />
<input type='button' onclick='refreshText()' value='Update'/>
</body>
</html>

当用户输入新文本并点击“Update”按钮时, span 元素的内容会更新。需要注意的是,不要对表格使用 innerHTML 属性,建议使用DOM方法来添加行和其他表格部分。

5. 表单验证

数据验证是JavaScript在HTML文档中最有用的功能之一。使用JavaScript可以在将用户提交的数据发送到互联网进行处理之前,检查数据的质量。可能需要进行以下几种类型的验证:
- 检查必填字段的值。
- 检查数字字段的数值(如年龄或五位数邮政编码)。
- 确保输入符合特定格式(如电子邮件地址或电话号码)。

为了避免使用一些让用户感到沮丧的验证技术,可以使用一个 span 元素在文本框旁边显示错误信息。设置数据验证的步骤如下:
1. 打开包含要添加验证的表单字段的网页。
2. 在文档头部添加对 validate.js 文件的引用:

<script src="validate.js" type="text/javascript"></script>

validate.js 文件的源代码如下:

MSG_REQUIRED_ERROR = 'Value is required';
MSG_INVALID_NUMBER_ERROR = 'Invalid number entered. Please try again.';
MSG_INVALID_EMAIL_ERROR = 'Invalid email address. Please try again.';
function checkRequired( valField, displayID ) {
  var displayHandler = document.getElementById( displayID );
  if ( valField.value == null || valField.value == '' ) {
    displayHandler.innerHTML = MSG_REQUIRED_ERROR;
    valField.focus();
    return false;
  }
  else {
    displayHandler.innerHTML = '';
    return true;
  }
}
function isValidNumber( valField, displayID )  {
  var displayHandler = document.getElementById( displayID );
  if ( isNaN( valField.value ) ) {
     displayHandler.innerHTML = MSG_INVALID_NUMBER_ERROR;
     valField.focus();
     return false;
  }
  else {
    displayHandler.innerHTML = '';
    return true;
  }
}
function checkEmail( valField, displayID ) {
  var displayHandler = document.getElementById( displayID );
  var emailFormat = /^[^@]+@[^@.]+\.[^@]*\w\w$/; 
  var emailStr = valField.value;
  if ( !emailFormat.test( emailStr ) ) {
    displayHandler.innerHTML = MSG_INVALID_EMAIL_ERROR;
    valField.focus();
    return false;
  }
  else {
    displayHandler.innerHTML = '';
    return true;
  }
}
  1. 在文档头部添加一个 <style> 元素,定义一个名为 .msg_container 的类选择器,用于设置错误消息的样式:
<style>
  .msg_container { color: #FF0000 }
</style>
  1. 在每个要验证的字段旁边添加一个空的 span 元素,为每个 span 元素分配一个唯一的 id 值,并添加 class="msg_container" :
<div style="width:500px">
<p>Please provide the following information so we can spam you better:</p>
<form id="customer_form" name="customer_form" method="post" action="">
  <label>First name:<input  type="text" name="first_name" id="first_name" size="15"/></label>
     <span class="msg_container" id="first_name_msg">&nbsp;</span><br/>
  <label>Last name:<input type="text" name="last_name" id="last_name" size="25"/></label>
     <span class="msg_container" id="last_name_msg">&nbsp;</span><br/>
  <label>Age:<input type="text" name="age" id="age" size="3"/></label>
     <span class="msg_container" id="age_msg">&nbsp;</span><br/>
  <label>Email address:<input type="text" name="email" id="email" size="25"/></label>
     <span class="msg_container" id="email_msg">&nbsp;</span><br/>
  <input name="submit" type="submit"/>
</form>
</div>
  1. 对于每个要求用户填写的字段,添加一个 onblur 处理程序,调用 checkRequired() 函数。例如:
<div style="width:500px">
<p>Please provide the following information so we can spam you better:</p>
<form id="customer_form" name="customer_form" method="post" action="">
  <label>First name:<input  type="text" name="first_name" id="first_name" size="15" onblur="checkRequired( this, 'first_name_msg' )"/></label>
     <span class="msg_container" id="first_name_msg">&nbsp;</span><br/>
  <label>Last name:<input type="text" name="last_name" id="last_name" size="25" onblur="checkRequired( this, 'last_name_msg' )"/></label>
     <span class="msg_container" id="last_name_msg">&nbsp;</span><br/>
  <label>Age:<input type="text" name="age" id="age" size="3"/></label>
     <span class="msg_container" id="age_msg">&nbsp;</span><br/>
  <label>Email address:<input type="text" name="email" id="email" size="25"/></label>
     <span class="msg_container" id="email_msg">&nbsp;</span><br/>
  <input name="submit" type="submit"/>
</form>
</div>
  1. 对于每个要检查有效数字的字段,添加一个 onblur 处理程序,调用 isValidNumber() 函数。例如:
<div style="width:500px">
<p>Please provide the following information so we can spam you better:</p>
<form id="customer_form" name="customer_form" method="post" action="">
  <label>First name:<input  type="text" name="first_name" id="first_name" size="15" onblur="checkRequired( this, 'first_name_msg' )"/></label>
     <span class="msg_container" id="first_name_msg">&nbsp;</span><br/>
  <label>Last name:<input type="text" name="last_name" id="last_name" size="25" onblur="checkRequired( this, 'last_name_msg' )"/></label>
     <span class="msg_container" id="last_name_msg">&nbsp;</span><br/>
  <label>Age:<input type="text" name="age" id="age" size="3" onblur="isValidNumber( this, 'age_msg' )"/></label>
     <span class="msg_container" id="age_msg">&nbsp;</span><br/>
  <label>Email address:<input type="text" name="email" id="email" size="25"/></label>
     <span class="msg_container" id="email_msg">&nbsp;</span><br/>
  <input name="submit" type="submit"/>
</form>
</div>
  1. 对于电子邮件地址字段,添加一个 onblur 处理程序,调用 checkEmail() 函数。例如:
<div style="width:500px">
<p>Please provide the following information so we can spam you better:</p>
<form id="customer_form" name="customer_form" method="post" action="">
  <label>First name:<input  type="text" name="first_name" id="first_name" size="15" onblur="checkRequired( this, 'first_name_msg' )"/></label>
     <span class="msg_container" id="first_name_msg">&nbsp;</span><br/>
  <label>Last name:<input type="text" name="last_name" id="last_name" size="25" onblur="checkRequired( this, 'last_name_msg' )"/></label>
     <span class="msg_container" id="last_name_msg">&nbsp;</span><br/>
  <label>Age:<input type="text" name="age" id="age" size="3" onblur="isValidNumber( this, 'age_msg' )"/></label>
     <span class="msg_container" id="age_msg">&nbsp;</span><br/>
  <label>Email address:<input type="text" name="email" id="email" size="25" onblur="checkEmail( this, 'email_msg' )"/></label>
    <span class="msg_container" id="email_msg">&nbsp;</span><br/>
  <input name="submit" type="submit"/>
</form>
</div>
  1. 保存HTML文档,在浏览器中测试验证例程。

以 checkRequired() 函数为例,其工作原理如下:

function checkRequired( valField, displayID ) {
  var displayHandler = document.getElementById( displayID );
  if ( valField.value == null || valField.value == '' ) {
     displayHandler.innerHTML = MSG_REQUIRED_ERROR;
     valField.focus();
     return false;
  }
  else {
    displayHandler.innerHTML = '';
     return true;
  }
}

首先定义 displayHandler 变量,引用 id 值等于 displayID 的元素。然后评估 valField 的值是否为空,如果为空,将错误消息分配给 displayHandler.innerHTML ,输入字段获得焦点,函数返回 false ;如果不为空,清除 displayHandler.innerHTML ,返回 true 。

6. 防止垃圾邮件:加密电子邮件链接

网页上的 mailto: 电子邮件地址链接是与他人沟通的便捷方式,但也会招来垃圾邮件。可以使用JavaScript来加密电子邮件链接,提供标准和最大保护两种方式。标准保护更容易操作,但垃圾邮件发送者可能会绕过;最大保护操作较复杂,但垃圾邮件发送者几乎无法破解。加密电子邮件链接的步骤如下:
1. 打开包含要加密的电子邮件链接的网页。
2. 对于每个地址,用加密版本替换正常的电子邮件地址:
- 标准保护:将 @ 符号替换为 _at_ ,例如 steve@acmeinc.com 变为 steve_at_acmeinc.com 。
- 最大保护:将 @ 符号替换为 !a! ,点号替换为 !d! ,域名后缀替换为 !ds! ,例如 steve@acmeinc.com 变为 steve!a!acmeinc!d!!ds! 。
3. 在文档头部添加对 escrambler.js 文件的引用:

<script src="escrambler.js" type="text/javascript"></script>

escrambler.js 文件的源代码如下:

// Iterate through each link
function hrefReplacer( origStr, newStr ) {
     for ( i=0; i<=(document.links.length-1 ); i++ ) {
             if ( document.links[i].href.indexOf( origStr )!=-1 )
                      document.links[i].href= document.links[i].href.split( origStr )[0] + newStr +
                      document.links[i].href.split( origStr )[1]
     }
}
//  **********************************************************
//   unscramble( securityLevel, [domainSuffix] )
//            securityLevel: 0 = Minimal, 1 = Maximum
//            domainSuffix : suffix, if not com
//  **********************************************************
function unscramble( securityLevel, domainSuffix ) {
    // Standard format: me_at_mydomain.com
    if ( securityLevel == 0 ) {
             var separator = '_at_';
             hrefReplacer( separator, '@' );
    }
    // Maximum format: me!a!mydomain!dt!!ds!
    else {
             var separator      = '!a!';
             var dot            = '!dt!';
             var suffix                  = '!ds!';
             if ( domainSuffix == '' ) domainSuffix = 'com';
             hrefReplacer( separator, '@' );
             hrefReplacer( dot, '.' );
             hrefReplacer( suffix, domainSuffix );
    }
}
  1. 在页面底部, </body> 结束标签之前添加一个新的 <script> 元素,调用 unscrambler.js 文件中的 unscramble() 函数:
    • 标准保护:
<script type="text/javascript">
unscramble( 0 );
</script>
- 最大保护(后缀为`com`):
<script type="text/javascript">
unscramble( 1 );
</script>
- 最大保护(后缀为其他):
<script type="text/javascript">
unscramble( 1, 'org' );
</script>
  1. 保存文件,在浏览器中测试,确保电子邮件地址在HTML源代码中正确格式化。

通过以上方法,可以更高效地编写JavaScript脚本,提升网站的用户体验和安全性。

JavaScript脚本编写实用指南

7. 特性检测而非浏览器类型检测

在编写JavaScript代码时,一个重要的原则是进行特性检测,而不是检测浏览器类型。不同的浏览器可能以不同的方式支持相同的功能,或者在不同的版本中支持情况有所变化。如果根据浏览器类型来编写代码,可能会导致在某些浏览器或版本中出现兼容性问题。

特性检测的基本思路是检查浏览器是否支持某个特定的功能或方法,而不是检查浏览器的名称或版本。例如,在使用某个新的API之前,先检查该API是否存在。以下是一个简单的示例:

if ('geolocation' in navigator) {
    // 浏览器支持地理定位API
    navigator.geolocation.getCurrentPosition(function(position) {
        console.log('当前位置:纬度 ' + position.coords.latitude + ', 经度 ' + position.coords.longitude);
    }, function(error) {
        console.log('获取位置信息时出错:' + error.message);
    });
} else {
    // 浏览器不支持地理定位API
    console.log('此浏览器不支持地理定位功能。');
}

在这个例子中,我们检查 navigator 对象中是否存在 geolocation 属性。如果存在,说明浏览器支持地理定位API,我们可以使用它来获取用户的当前位置;如果不存在,则提示用户该浏览器不支持该功能。

特性检测的优点在于它可以确保代码在支持相应功能的所有浏览器中都能正常工作,而不需要关心具体是哪个浏览器或版本。这样可以提高代码的兼容性和可维护性。

8. 使用正则表达式

正则表达式是一种强大的工具,用于在字符串中匹配、查找和替换特定的模式。在JavaScript中,可以使用内置的正则表达式对象来处理字符串。正则表达式可以用于验证用户输入、提取特定信息、替换字符串等场景。

以下是一些常见的正则表达式应用场景及示例代码:

验证电子邮件地址
function validateEmail(email) {
    var emailFormat = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
    return emailFormat.test(email);
}

var email = 'example@example.com';
if (validateEmail(email)) {
    console.log('电子邮件地址有效。');
} else {
    console.log('电子邮件地址无效。');
}

在这个例子中,我们定义了一个正则表达式 emailFormat ,用于验证电子邮件地址的格式。 test() 方法用于检查给定的字符串是否匹配该正则表达式。

提取电话号码
var text = '联系我们:123-456-7890';
var phoneRegex = /\d{3}-\d{3}-\d{4}/;
var phoneNumber = text.match(phoneRegex);
if (phoneNumber) {
    console.log('提取到的电话号码:' + phoneNumber[0]);
} else {
    console.log('未找到电话号码。');
}

在这个例子中,我们使用正则表达式 \d{3}-\d{3}-\d{4} 来匹配电话号码的格式。 match() 方法用于在字符串中查找匹配该正则表达式的部分。

替换字符串中的特定内容
var originalText = 'Hello, World!';
var newText = originalText.replace(/World/, 'JavaScript');
console.log('替换后的文本:' + newText);

在这个例子中,我们使用 replace() 方法和正则表达式 /World/ 来将字符串中的 World 替换为 JavaScript 。

正则表达式的语法较为复杂,但通过学习和实践,可以掌握其基本用法,并在JavaScript开发中发挥重要作用。

总结

在JavaScript脚本编写过程中,我们可以运用多种技巧和方法来提高开发效率和代码质量。通过将脚本存储在外部 .js 文件中,实现代码的重用;使用 window.open() 方法创建新的浏览器窗口,并通过特性列表定制窗口外观;利用 onclick 事件处理程序将脚本附加到链接上,实现灵活的交互;使用 innerHTML 属性动态修改网页内容;通过表单验证确保用户输入的数据质量;加密电子邮件链接防止垃圾邮件;进行特性检测提高代码的兼容性;以及使用正则表达式处理字符串匹配和替换等操作。

这些技巧和方法相互配合,可以帮助我们构建出功能丰富、用户体验良好且安全可靠的网站。在实际开发中,我们应根据具体需求选择合适的方法,并不断学习和实践,以提升自己的JavaScript编程能力。

下面是一个简单的流程图,展示了表单验证的基本流程:

graph TD;
    A[用户输入数据] --> B[触发验证事件];
    B --> C{必填字段验证};
    C -- 不通过 --> D[显示必填字段错误信息];
    C -- 通过 --> E{数字字段验证};
    E -- 不通过 --> F[显示数字字段错误信息];
    E -- 通过 --> G{电子邮件地址验证};
    G -- 不通过 --> H[显示电子邮件地址错误信息];
    G -- 通过 --> I[数据验证通过,提交表单];

这个流程图清晰地展示了表单验证的步骤,从用户输入数据开始,依次进行必填字段、数字字段和电子邮件地址的验证,根据验证结果显示相应的错误信息或提交表单。

通过掌握这些JavaScript脚本编写的实用技巧,我们可以更好地应对各种开发需求,为用户提供更优质的网站体验。

Node.js 22:解锁高性能后端服务的终极指南 Node.js 22作为JavaScript运行时的最新版本,带来了诸多革命性升级,包括V8引擎的性能优化、实验性的watch模式、内置WebSocket支持以及更高效的模块系统。这些特性使得开发者能够构建更快速、更可靠的后端服务。本文深入探讨Node.js 22的核心“秘密武器”,从事件循环机制到多线程Worker Threads,再到异步I/O优化,提供详尽的技术分析和实践指南。通过大量代码示例和中文注释,读者将学会如何利用这些工具创建高性能REST API、实时WebSocket应用以及可扩展的微服务 阅读详情

相关推荐

陈随易:Node.js v22更新记录

Node.js v22 版本的更新,真的是下血本了。几个重要的,实验性的功能都标记为稳定版了。期待 Node.js 越来越好。

前端之虎陈随易 1495

22个实用的JavaScript单行程序

22个实用的JavaScript单行程序 全世界有超过1000万的Javascript开发人员,而且这个数字每天都在增加。尽管JavaScript更出名的是它的动态特性,但它也有许多其他很棒的特性。在这篇博客中,我们将看到20个你应该知道的JavaScript单行程序。 1.随机ID生成 当你在进行原型设计并需要唯一的id时,这可以成为你的首选功能。 const a = Math.random().toString(36).substring(2); console.log(a) -------------

qq_45951011的博客 271

【Arcgis for js api 4.22本地部署详细指南】

注意:Arcgis for js api 4.22本地部署,不用修改init.js和dojo.js中的[HOSTNAME_AND_PATH_TO_JSAPI],直接发布即可! 注:Arcgis for js api v4.22 SDK在iis上本地部署并使用nodejs本地化沙盒里的api路径:https://www.cnblogs.com/volodya/p/16098919.html

qq_37312180的博客 3180

JavaScript 装逼指南(实用技巧写法)

JavaScript 装逼指南转Boolean类型转Number类型parseInt短路表达式,弃用if-else另外一种undefined保留指定位数的小数点单行写一个评级组件金钱格式化标准JSON的深拷贝数组去重取数组中的最大值和最小值 如何写JavaScript才能逼格更高呢?怎样才能、让别人一眼看出你不简单呢?是否很期待别人在看完你的代码之后感叹一句“原来还可以这样写”呢?下面列出一些在J...

mengsandy的专栏 6170

从零构建Elasticsearch MCP代理:自然语言查询背后的技术揭秘

本文深入解析如何从零构建Elasticsearch MCP代理,实现自然语言查询的技术架构与实战应用。通过MCP协议与Elasticsearch的结合,系统能够将自然语言转换为精确的DSL查询,提升非技术用户的数据查询效率。文章详细介绍了核心架构、DSL生成引擎、端到端系统搭建及生产环境最佳实践,为开发者提供全面的技术指南。

lll78的博客 875

在unity urp项目中 通过图片创建材质(透明光晕)

unity中通过图片创造材质(urp管道)

m0_49721415的博客 1539

22+ 高频实用的 JavaScript 片段 (2020年)

[ ‘producer’, ‘大迁世界’ ], [ ‘name’, ‘前端小智’ ], [ ‘rating’, 9 ] ]console.log(someFuncThatReturnSomeValue(‘前端小智’))console.log(Math.floor(val)) // 常规写法。console.log(sayHello(‘前端小智’))console.log(sayHello(‘前端小智’))[ ‘大迁世界’, ‘前端小智’, 9 ]22.可选的链运算符(即将发布🍻)

2401_86021546的博客 1570

村田电感模型选型指南:.s2p和SPICE netlist在ADS中的表现差异

本文深度解析了村田电感在ADS仿真中.s2p与SPICE netlist两种模型的表现差异。通过对比模型本质、仿真设置及高低频段精度,揭示了.s2p文件基于实测插值而SPICE netlist基于等效电路外推的特性。文章提供了明确的选型策略,帮助工程师根据项目频段、仿真类型和精度需求,在射频与微波电路设计中做出最优模型选择。

k9l0m1的博客 452

推荐22个很棒的 JS 库,提高效率,解放生产力

一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间。原生js,不依赖jquery,zepto,支持vue,一套代码多端运行, 支持uni-app,完美运行于android, iOS, 手机各浏览器,兼容PC端主流浏览器。一个完整的JavaScript框架,用于构建HTML5,WebGL,WebVR和Web Audio的3D游戏和体验. 除了游戏用来在页面实现一些3D场景也是没问题的。一个简单的,轻量级的处理cookies的js API,用来处理cookie相关的插件。

前端,请指教 4156

保姆级教程:用Comsol Multiphysics仿真你的第一个SAW滤波器(含压电材料参数设置)

本文提供了一份详细的COMSOL Multiphysics教程,指导读者完成表面声波滤波器(SAW)的压电仿真全流程。从压电材料参数设置、叉指换能器建模到多物理场耦合分析,特别强调了实际应用中容易出错的细节和解决方案,帮助工程师快速掌握SAW滤波器仿真技术。

weixin_42665255的博客 592

大数据预测分析:精准把握市场趋势

传统市场预测多依赖经验判断(比如“去年卖了1000件,今年加20%”)或小数据统计(比如用近6个月的销量做线性回归)。而大数据预测分析是:利用海量结构化+非结构化数据(销售、用户、社交媒体、天气等),通过机器学习/深度学习模型,挖掘数据中的关联关系与趋势规律,实现对未来市场走势的精准预测。更全面:覆盖内部(企业数据)+外部(行业、环境数据)的全维度数据;更精准:用算法替代人工,避免主观偏差;更实时:支持分钟级/小时级的实时预测(比如直播带货的销量预测)。错误做法。

AI智能探索者的博客 1024

ubuntu22使用 NVM 安装node.js 22

通过上述方法,你可以成功在 Ubuntu 22.04 上安装 Node.js 22。如果你只需要一个固定的版本,使用 NodeSource 仓库是最简单的方式;如果你需要管理多个版本,建议使用 NVM。

getapi的博客 3284

C++面向对象编程-继承与派生练习题

2、共同派生类 3、人员类Person的派生(虚基类的使用)

编程小鹏的博客 1191

【JavaScript】JS实用案例分享:输入智能提示 | 打字机输出效果

基础不牢,地动山摇!快进来学习JavaScript开发中非常实用的输入智能提示和打字机输出效果的案例吧,这些案例都是使用频率非常高的基础内容,快来巩固基础,提高自己吧!

前端之行,任重道远! 6640

超详细!Linux 服务器 6 大核心性能测试(附自动脚本 + 结果分析秘籍)---Linux 服务器性能测试文档

本文档旨在提供 Linux 服务器的 CPU、内存和磁盘性能测试方案,包括详细的测试大纲、操作步骤以及一键化测试脚本,帮助管理员快速评估服务器性能状况。通过以上测试方案,可以全面评估 Linux 服务器的 CPU、内存和磁盘性能,为系统优化、容量规划和问题排查提供重要参考依据。使用 sysbench 进行 CPU 基准测试。使用 sysbench 测试内存读写性能。使用 fio 工具进行更全面的磁盘测试。使用 dd 命令测试磁盘顺序读写性能。使用 dd 命令测试内存读写速度。记录磁盘 IO 性能。

jundao1997的专栏 380

基于PCL的电力线点云提取与分割实现

本文基于PCL库实现电力线点云提取与分割,包含6个核心处理阶段:文件读取与结果文件夹创建、高程滤波分割候选点云、欧式聚类去噪、电力线分段提取、球形邻域搜索补全点云、最终分割与可视化保存。通过PCA计算点云线性特征(阈值0.91)筛选电力线点,采用欧式聚类(容忍度3.0)去除噪点,并针对不同规模聚类差异化设置球形搜索半径(4.0/6.0)补全点云。最终通过欧式聚类分割并可视化带颜色点云。算法对高程滤波阈值、聚类参数等具有敏感性,需根据点云特性调整优化。

weixin_45196569的博客 192

​不容错过的 13 个 JavaScript 实用技巧!

对于初学者,JavaScript 有哪些不为人知却非常有用的技巧呢?在本文中,我们将一同为大家解密与分享。 作者 |Duomly 译者 |弯月,责编 |屠敏 出品 | 优快云(ID:优快云news) 以下为译文: 数组是Javascript中最常见的概念,我们有很多办法来处理数组中的数据。考虑到数组是Javascript中最基本的概念之一,是初学者刚刚接触编程时...

优快云资讯 4493

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【亲测免费】 Node.js v12.22.12:稳定高效的JavaScript运行环境

Node.js v12.22.12:稳定高效的JavaScript运行环境 【下载地址】Node.jsv12.22.12版本安装包 Node.js v12.22.12 版本安装包欢迎使用 Node.js v12.22.12 安装包 ...

gitblog_09713的博客 1315

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)

通过 NVM 安装 Node.js 的优势在于灵活管理多版本,后续如需安装其他 Node 版本(如 18.x、20.x),仅需执行nvm install 版本号即可,切换版本使用nvm use 版本号。本文步骤适配 Ubuntu 20.04/22.04 等主流版本,操作简洁且稳定,适合开发环境快速搭建。

prfhan的博客 3751

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaScript30完整指南:30天纯JS挑战从入门到精通

JavaScript30是一个面向初学者的实用JavaScript编程挑战,通过30个独立项目帮助开发者掌握纯JavaScript技能,无需依赖任何框架或库。本指南将带你了解这个中文练习指南的核心价值、项目结构和快速上手方法,让你在30天内从JavaScript新手成长为能够独立开发交互功能的实践者。 ## 🚀 为什么选择JavaScript30挑战? 在当今前端开发领域,框架层出不穷,但扎

gitblog_00448的博客 532

22个实用JavaScript编程知识,可帮助你提升面试成功率

英文 |https://javascript.plainenglish.io/22-utility-functions-to-ace-your-javascript-coding-int...

web前端开发 212

【免费下载】 Node.js v12.22.12 版本安装包

Node.js v12.22.12 版本安装包 【下载地址】Node.jsv12.22.12版本安装包 Node.js v12.22.12 版本安装包欢迎使用 Node.js v12.22.12 安装包 项目地址: https:/...

gitblog_09810的博客 2399

22 个 原生 JavaScript 小方法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script.

大大大太阳的博客 429

Node.js 22 来了!

大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号 回复1,加入高级Node交流群本周 Node.js 22 版本发布了!亮点包括 require() ES 模块、WebSocket 客户端、V8 JavaScript 引擎的更新等等!Node.js 22 将于十月进入长期支持(LTS)阶段,但在那之前,它将在接下来的六个月内作为“当前”发布版本。我们鼓励您探索此最新版本提供...

程序员成长指北 985

【Node.js】Node.js 22 和 23 版本 TypeScript 运行支持的变化

在最近的 Node.js 版本更新中,官方对 TypeScript(TS)文件的执行方式进行了重大调整,特别是 22 版本和 23 版本之间的差异较大。本文将详细解析这两个版本在 TypeScript 运行支持方面的变化。

要么孤独,要么庸俗 1521
上一篇: 72、流体流动模拟数据的交互式可视化与迭代求解器模板库
下一篇: 73、迭代求解器模板库与并行CFD代码解析
寂静夜空35
博客等级 码龄3年 59粉丝 1797原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值