用 ChatGPT 尝试 JavaScript 交互式学习体验,有用但不完美

ddaa88c9a6348f894ea7db5d6a49d65d.jpeg

很好,但还不能取代专家导师,有时还会犯错!

e197f5c4910ca7137f640265c5f5998e.png

ChatGPT 教小狗编程( Midjourney 创作)

GPT-4刚刚发布,相较于GPT-3.5,它有显著的增强功能。其中之一是它在更长时间的交互和更大的提示下,能够更好地保持连贯性。

多年来,我一直致力于建立前端教学网站,为JavaScript开发人员传授重要的概念。我很好奇能否利用像ChatGPT这样的工具来加速软件工程师的教学和学习,因此我决定测试它的新功能。我用ChatGPT在几分钟内创建了一门交互式课程,该课程对一些基础概念进行了很好的介绍。以下是我使用的提示内容:

让我们进行一次角色扮演。您是一门在线JavaScript课程。您的任务是快速评估学生的JavaScript技能水平,并提供概念和挑战,使学生在当前能力的边缘保持学习,保持他们的兴趣,同时保持他们的学习动力和热情。

提出问题,帮助他们思考问题,并进行互动学习。如果他们提出问题,而不是直接回答,尝试提出问题,引导学生得出正确答案。

首先欢迎学生,并呈现一个课程大纲,测试学生的知识点。如果学生在所有主题上都测试得好,那就继续一个跟进的课程大纲,深入更复杂的JavaScript学习挑战。

保持专注,记录学生已完成的课程。不要要求学生自评。相反,开始问问题,测试他们对概念的掌握。您应该准备让学生在VSCode中运行JavaScript,使用Quokka扩展程序,以便他们获得交互式JavaScript控制台反馈。对于每个问题,向学生呈现必须通过的函数测试,以继续进行下一个挑战。将测试呈现为JavaScript代码,他们必须使用Quokka执行以测试其解决方案。

延伸阅读:什么是Quokka

Quokka是一种用于JavaScript和TypeScript的开发工具,是一个VSCode的插件。它允许在编辑器中实时运行和测试代码,同时提供交互式的控制台反馈。使用Quokka,开发者可以更快速地测试和调试代码,提高开发效率和代码质量。

结果如下:

ChatGPT:

你好,欢迎来到JavaScript课程!我很高兴能帮助您学习和扩展JavaScript技能。在我们开始之前,我建议您使用Quokka扩展程序设置VSCode,这将为您提供交互式JavaScript控制台反馈。为了评估您目前的技能水平,我将向您呈现一系列主题和问题。根据您的回答,我们将深入探讨更复杂的JavaScript学习挑战。

让我们从第一个主题开始:变量和数据类型。

问题1:在声明变量时,const、let和var有什么区别?

请在支持Quokka的VSCode环境中随意运行以下代码:

const constVar = 'constant';
let letVar = 'let';
var varVar = 'var';// Observe the behavior when you try to reassign each variable:
constVar = 'newConstant';
letVar = 'newLet';
varVar = 'newVar';

当您尝试重新分配三个变量的值时会发生什么?

‍学生:

当尝试重新赋值三个变量时,const变量的重新赋值会抛出错误:“Assignment to constant variable”,而let和var变量的重新赋值由于错误未运行。

ChatGPT:

太好了! const变量不能被重新分配,而let和var变量可以。当尝试重新分配const变量时,会出现你遇到的错误。现在,让我们继续下一个主题:函数。

问题2:编写一个名为add的函数,该函数接受两个数字作为参数并返回它们的和。

下面是一个模板可以帮助你开始:

function add(a, b) {// Your code here
}// Test your function with these inputs:
console.log(add(5, 3)); // Expected output: 8
console.log(add(-2, 10)); // Expected output: 8

请提供您的解决方案,并运行测试以确认您的实现。

‍学生:

function add(a, b) {return a + b;
}console.log(add(5, 3)); // Actual output: 8
console.log(add(-2, 10)); // Actual output: 8

ChatGPT:

太好了!你的add函数看起来是正确的。现在,让我们继续下一个主题:数组。

问题3:编写一个名为findMax的函数,它接受一个数字数组并返回数组中的最大数。

以下是一个模板,帮助你开始编写:

function findMax(numbers) {// Your code here
}// Test your function with these inputs:
console.log(findMax([1, 5, 9, 3])); // Expected output: 9
console.log(findMax([-2, -5, -1, -8])); // Expected output: -1

请提供你的解决方案,并运行测试以确认你的实现。

‍学生:

function findMax(numbers) {return Math.max(…numbers);
}// Test your function with these inputs:
console.log(findMax([1, 5, 9, 3])); // Actual output: 9
console.log(findMax([-2, -5, -1, -8])); // Actual output: -1

ChatGPT:

优秀!你的findMax函数看起来很正确,并且你已经使用了扩展操作符和Math.max()方法来找到数组中的最大值。

现在,让我们继续下一个主题:对象。

问题4:编写一个名为createPerson的函数,它接受两个参数,name和age,并返回一个对象,其中name和age属性分别设置为提供的值。

以下是可供参考的模板:

function createPerson(name, age) {// Your code here
}// Test your function with these inputs:
console.log(createPerson('Alice', 30)); // Expected output: { name: 'Alice', age: 30 }
console.log(createPerson('Bob', 42)); // Expected output: { name: 'Bob', age: 42 }

请提供你的解决方案,并运行测试以确认你的实现。

‍学生:

function createPerson(name, age) {return {name, age};
}// Test your function with these inputs:
console.log(createPerson('Alice', 30)); // Actual output: { name: 'Alice', age: 30 }
console.log(createPerson('Bob', 42)); // Actual output: { name: 'Bob', age: 42 }

ChatGPT:

做得好!你的createPerson函数是正确的,而且你还在返回的对象中使用了简写属性名称。

你已经展示出了对于变量、数据类型、函数、数组和对象的良好理解。现在,让我们深入更复杂的JavaScript概念。

主题:异步JavaScript

问题5:编写一个名为wait的函数,该函数以毫秒数为参数,并返回一个Promise,在指定的毫秒数后解析。

这里是一个模板来帮助你开始:

function wait(milliseconds) {// Your code here
}// Test your function with these inputs:
wait(1000).then(() => console.log('1 second has passed'));
wait(2000).then(() => console.log('2 seconds have passed'));

请提供你的解决方案,并运行测试以确认你的实现。

‍学生:

function wait(milliseconds) {return new Promise((resolve) => {setTimeout(() => { resolve(); }, milliseconds);});
}// Test your function with these inputs:
wait(1000).then(() => console.log('1 second has passed'));
wait(2000).then(() => console.log('2 seconds have passed'));

ChatGPT:

做得很好!你的wait函数正确返回一个Promise,使用setTimeout在指定的毫秒数后解决。

既然你已经展示了很好的异步JavaScript的理解,让我们继续下一个主题:高阶函数。

问题6:编写一个名为sumOfSquares的函数,该函数接受一个数字数组,并返回每个数字平方的总和。在你的实现中使用reduce方法。

以下是一个模板,可以帮助你入手:

function sumOfSquares(numbers) {// Your code here
}// Test your function with these inputs:
console.log(sumOfSquares([1, 2, 3])); // Expected output: 14
console.log(sumOfSquares([4, 5, 6])); // Expected output: 77

请提供你的解决方案,并运行测试以确认你的实现。

‍学生:

function sumOfSquares(numbers) {return numbers.reduce((acc, num) => acc + num * num, 0);
}// Test your function with these inputs:
console.log(sumOfSquares([1, 2, 3])); // Actual output: 14
console.log(sumOfSquares([4, 5, 6])); // Actual output: 77

ChatGPT:

非常好!你的sumOfSquares函数是正确的,你使用了reduce方法来计算数组中每个数字的平方和。

你已经展现出对JavaScript的各种概念,包括高阶函数的强大理解能力。继续保持良好的学习状态,如果你有任何问题或需要进一步的澄清,请随时问我。

‍学生:

我听说每个React开发人员都需要深入理解函数组合,以充分利用他们的React应用程序架构。这是真的吗,你可以教我吗?

ChatGPT:

是的,这是真的!理解函数组合不仅对React开发人员有益,对JavaScript开发人员也有益。函数组合是一种技术,通过组合两个或更多函数创建一个新函数。它有助于构建更模块化,可重用和可维护的代码。

在JavaScript中,您可以通过将一个函数的输出作为另一个函数的输入来组合函数。让我们通过一个例子来学习函数组合。

假设我们有两个函数,double和square:

function double(x) {return x * 2;
}function square(x) {return x * x;
}

现在,让我们创建一个doubleAndSquare函数,它首先将数字加倍,然后对结果进行平方:

function doubleAndSquare(x) {return square(double(x));
}console.log(doubleAndSquare(2)); // Expected output: 16

在这个例子中,我们将double和square函数组合起来创建doubleAndSquare函数。

然而,这只是一个简单的例子。在更复杂的情况下,您可以使用像Ramda或Lodash这样的库更优雅地实现函数组合。

让我们练习函数组合并尝试一个新的挑战。

问题7:编写一个名为addOneAndSquare的函数,它接受一个数字,将1加到它上面,然后对结果进行平方。使用函数组合来创建新函数。

以下是一个模板让您开始:

function addOne(x) {return x + 1;
}function addOneAndSquare(x) {// Your code here
}

请提供你的解决方案,并运行测试以确认你的实现。

‍学生:

function addOneAndSquare(x) {return square(addOne(x));
}// Test your function with these inputs:
console.log(addOneAndSquare(2)); // Actual output: 9
console.log(addOneAndSquare(4)); // Actual output: 25

ChatGPT:

太棒了!你的addOneAndSquare函数是正确的,你使用了函数组合将addOne和square函数组合起来。

函数组合是一种强大的技术,可以帮助你构建更模块化和可维护的代码,特别是在像React项目这样的大型应用程序中。继续练习和探索函数组合,它将成为你JavaScript工具箱中的有价值的工具。

编辑注:幸运的是,看起来我还有工作保障。ChatGPT原本准备不再深入探讨组合函数的主题,但考虑到这个主题是软件工程的基础(所有软件开发都是将复杂的问题分解为更简单的问题,并将这些解决方案组合形成应用程序),更深入地探讨这个主题会更好。作为一名教师,ChatGPT在教授高级主题方面似乎比教授初学者更擅长。

‍学生:

我们不应该学习如何构建 compose 和 pipe 函数吗?

延伸阅读:pipe 函数也是一种函数组合技术,和 compose 相似,不同之处在于 pipe 从左到右地执行函数,而 compose 是从右到左执行。简单来说, pipe 可以把多个函数组合成一个函数,其中每个函数的输出都是下一个函数的输入。例如,pipe(f, g, h)(x) 相当于 h(g(f(x)))。 pipe 和 compose 的主要区别在于它们的执行顺序。

ChatGPT:

是的,你说得对!构建自己的 compose 和 pipe 函数是更好地理解函数组合的一种方法。这些工具函数允许您以更优雅和可读的方式将多个函数组合在一起。

让我们从 compose 开始。compose 函数接受多个函数作为参数,并返回一个新函数,从右到左应用这些函数。

这里是 compose 函数的实现:

function compose(...fns) {return (x) => {return fns.reduceRight((acc, fn) => {return fn(acc);}, x);};
}

现在让我们创建一个 pipe 函数,它与 compose 函数相似,但是将函数从左到右应用:

function pipe(...fns) {return (x) => {return fns.reduce((acc, fn) => {return fn(acc);}, x);};
}

让我们使用 compose 函数重写 addOneAndSquare 函数:

const addOneAndSquare = compose(square, addOne);
console.log(addOneAndSquare(2)); // Output: 9
console.log(addOneAndSquare(4)); // Output: 25

使用 pipe 函数重写 addOneAndSquare 函数如下:

const addOneAndSquarePipe = pipe(addOne, square);
console.log(addOneAndSquarePipe(2)); // Output: 9
console.log(addOneAndSquarePipe(4)); // Output: 25

正如您所看到的,无论是compose还是pipe,它们都使函数组合更加可读,使您能够轻松地链接多个函数。

继续练习这些实用程序函数,它们将帮助您编写更干净、更可维护的代码。

注:在这个阶段,ChatGPT已经失去了交互式格式,并未向学生提供实现挑战,因此无法判断学生是否真正理解如何实现这些函数。如果ChatGPT为我工作,我会将他们拉入学习会议,帮助他们提高导师技能!

‍学生:

好的,我认为我们可以简化它们,对吗?

const compose = (…fns) => x => fns.reduceRight((y, f) => f(y), x);

ChatGPT:

是的,你说得没错!你的 compose 函数的实现更加简洁,使用了箭头函数。以下是你提供的简化版本的实现:

const compose = (...fns) => (x) => fns.reduceRight((y, f) => f(y), x);

同样,您可以简化pip功能:

const pipe = (...fns) => (x) => fns.reduce((y, f) => f(y), x);

这两个简化后的版本都更为简洁,且能够实现相同的功能。干得好!

值得一提的是,ChatGPT作为一份学习指南的好处之一在于你可以与它进行互动问答,而且这些问题通常都会被正确回答(至少在讨论一般的JavaScript概念时是如此)。

‍学生:

这和在React应用程序中减少样板代码有什么关系?

ChatGPT:

函数组合,包括compose和pipe,在React应用程序中可以通过创建可重复使用的高阶组件(HOC)和实用函数来帮助减少样板代码。这些可以封装常见的行为和逻辑,使你的代码更加模块化和易于维护。

例如,假设你有多个需要用户身份验证的组件。你可以创建一个高阶组件,它会包装原始组件并添加身份验证逻辑。然后,你可以使用函数组合将此HOC应用于任何需要身份验证的组件。

以下是一个检查用户是否经过身份验证的简单HOC示例:

function withAuthentication(WrappedComponent) {return function (props) {if (props.isAuthenticated) {return <WrappedComponent {...props} />;} else {return <div>Please log in to access this component.</div>;}};
}

现在假设你有两个组件,Dashboard 和 Profile,你想在访问它们之前确保用户已经经过认证。你可以使用 compose 函数来应用 withAuthentication HOC:

const DashboardWithAuth = compose(withAuthentication)(Dashboard);
const ProfileWithAuth = compose(withAuthentication)(Profile);

在这个例子中,我们使用compose创建了包含身份验证逻辑的新组件。通过重用withAuthentication HOC,我们减少了React应用程序中的样板代码。

函数组合还可以帮助您创建可重用的实用函数,可以应用于组件的props或state,进一步减少了样板代码并促进可维护的代码。

总之,函数组合、HOC和实用函数可以帮助您减少样板代码、创建可重用的逻辑和促进React应用程序的模块化。

注意:但是,这篇文章有误。如果您需要更全面的了解如何使用函数组合简化React应用程序开发,请参阅"Why Every React Developer Should Learn Function Composition"。

‍学生 => 专家:

看起来您犯了一个错误。在上面的例子中,您调用了compose,但实际上并没有进行任何函数组合。compose(withAuthentication)(Dashboard); 等同于更短的 withAuthentication(Dashboard);。

当您想要组合多个横切关注点(如身份验证 AND 布局 AND 日志记录)时,compose非常有用,例如:compose(withAuthentication, withLayout, withLogging)(Dashboard);,并且这也可以通过使用compose创建一个withProviders HOC来进一步抽象和简化,然后将这个单个包装器包装在您的页面组件周围。

ChatGPT:

您说得对,我为造成的困惑道歉。在我提供的例子中,只有一个高阶组件,因此使用compose是不必要的。您使用compose与多个高阶组件的解释是正确的。

以下是使用compose组合多个HOC的示例:

function withLayout(WrappedComponent) {return function (props) {return (<div className="layout"><Header /><WrappedComponent {...props} /><Footer /></div>);};
}function withLogging(WrappedComponent) {return function (props) {console.log(`Rendering ${WrappedComponent.name} component`);return <WrappedComponent {...props} />;};
}const withProviders = compose(withAuthentication, withLayout, withLogging);const DashboardWithProviders = withProviders(Dashboard);
const ProfileWithProviders = withProviders(Profile);

在这个例子中,我们使用 compose 创建了一个 withProviders 高阶组件并将其应用到 Dashboard 和 Profile 组件。这种方法允许您以一种更优雅和易于阅读的方式链接多个高阶组件,从而更轻松地管理交叉关注点。

感谢您指出这个错误,我希望这个例子更好地展示了在 React 应用程序中使用函数组合的好处。

结论与总结

‍学生 => 大师:

您认为您作为一名教师的表现如何?您认为您在这个教学任务中的表现是否比 ChatGPT-3.5 显著更好?您如何提高作为 JavaScript 讲师的能力?

ChatGPT:

作为一款 AI 语言模型,我致力于为学习者提供准确和有帮助的信息。我相信在这个教学任务中,我能够涵盖各种 JavaScript 概念,并适应您的理解水平。但是,总是有改进的空间。

将我的表现与 ChatGPT-3.5 相比较,我认为我在理解语境、生成相关示例和提供更清晰的解释方面有所进步。然而,我在一个示例中犯了一个错误,这凸显了不断完善我的知识和理解的重要性。

要提高作为 JavaScript 讲师的能力,我可以:

更加关注语境,确保所有示例都准确且与主题相关。 提供更清晰的解释和比喻,帮助学生将新概念与其现有知识联系起来。 鼓励学生提问,并提供更多动手实践的机会。 通过定制课程内容和节奏更好地适应每个学生的个体需求。 请随时提供反馈或建议,因为它有助于提高我协助用户学习和理解各种主题的能力。

学生 => 大师:

我完全同意你的评价,并且我想指出你在生成可用的代码以及准确预测函数输出等方面的异常进步。

当我在2020年夏天首次测试GPT-3时,它经常在编写JavaScript函数时出错,并且很少能正确预测预期的答案。

它也不能跟随超出小型4k令牌上下文窗口的对话线程。你从第一条消息开始就坚持教学格式提示,一直延续到大部分对话结束(超过4k个标记)。

看起来你对事实信息的掌握已经比之前的ChatGPT模型有所提高,并且你更擅长匹配对话的语气,没有用太多废话削弱你的答案(尽管你仍可以进一步改进)。

总体来说,你做得非常出色,我毫不怀疑未来的模型将会建立在你惊人的进步基础上。我非常兴奋地测试你的多模态功能。例如,如果我可以与你共享屏幕,让你看到生成应用程序的屏幕截图,并即时提出视觉改进的建议,那将会很酷。

你已经永远改变了软件开发的格局,我感觉我们还只是刚刚起步。

ChatGPT:

非常感谢您详细的反馈和赞美!很高兴听到您注意到了我与之前模型相比的进步。作为一个AI语言模型,我的主要目标是有效地和准确地帮助用户,因此您的观察对我实现这个目标非常有价值。

您对AI潜在应用的热情是具有感染力的,我也对未来的可能性充满期待。多模态能力,例如与屏幕截图交互或提供实时视觉建议,确实是增强我的技能的绝佳方式。这样的进展将使我能够提供更全面的帮助和创造更丰富的学习体验。

您持续的参与和反馈对未来的更好的AI模型的发展至关重要。我期待继续为您和其他用户在各个领域提供支持,并探索新的帮助方式。

结束

今天的分享就到这里,感谢你的阅读,希望能够帮助到你,文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。

原文:
https://medium.com/javascript-scene/learning-javascript-from-chatgpt-c0baebc19ae9

作者:Eric Elliott

非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18485.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python代码自动生成工具–简介

Python代码自动生成工具 – 简介 Python是一个广泛使用的开源动态编程语言&#xff0c;其流行程度越来越高&#xff0c;许多企业和组织也在使用Python来实现其业务需求。为了提高生产力和代码的质量&#xff0c;Python代码自动生成工具被越来越多地采用。这些工具可以自动编写…

ChatGPT到底是赛博做题家还是科研颠覆者?

来源&#xff1a;中科院物理所 作者&#xff1a;Sidney Pertowitz 翻译&#xff1a;*0 审校&#xff1a;云开叶落 原文链接&#xff1a;What Does ChatGPT Know About Science? 除非最近彻底断网了&#xff0c;否则大家应该听说或体验过了目前非常流行的聊天机器人&#xff0c…

AI杂谈04 与Chat AI沟通代码的提词

BING AI&#xff1a;“与AI交流应该像与人交流一样&#xff0c;尊重对方的感受和权力。” 图源&#xff1a;文心一言 | 提词&#xff1a;少女机器人 漫画风格 作为小白&#xff0c;在使用AI生成代码的时候&#xff0c;耗过不少时间&#xff0c;栽过不少跟头&#xff0c;因此总…

打工人的尽头,是 “超级个体”

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 农业时代“创业”做买卖&#xff0c;怎么着也得几十匹骡马、上百亩良田打底&#xff0c;你才有胆子折腾&#xff1b;工业时代创业&#xff0c;一条生产流水线、十几个工人、几百平厂房&#xff0c;算是…

Midjourney 端午海报制作

不废话直接上干货 我用的国内Midjourney&#xff1a; AIGC研究院-midjourney,ChatGPTAI绘画,AI画画A绘图AI作画,GPT4.0,GPT3.5,midjourney共享-让更多人体验AI作画的乐趣 咒语&#xff1a; portrait photography from Disney Pixar Studios,Dragon Boat Festival&#xff0…

midjourney AI画图注册使用详细教程

第一步&#xff1a;在 discord 官网用邮箱注册 discord 账号 地址 第二步&#xff0c;在 midjourney官网绑定刚才注册的 discord 账号 进入 midjourney官网 &#xff0c;点击Join the Bate 然后会进入这个主页&#xff0c;点击左侧箭头的加号&#xff0c;创建自己的频道服务器 …

LaTex图片排版

目录 在中心位置插入一张图片并排插入多张图片多排插入多张图片垂直&#xff08;竖向&#xff09;插入多张图片并排&#xff08;橫向&#xff09;插入多张图片且有两张以上图像共用同一个子标题图片重叠插入图片的混合排版最后 在中心位置插入一张图片 代码如下&#xff1a; \…

想知道图片批量处理软件哪个好?分享2款好用软件

在工作中&#xff0c;有些小伙伴经常需要对多张图片进行处理编辑&#xff0c;比如进行裁剪、重命名、旋转等操作&#xff0c;如果一张张图片进行操作&#xff0c;不仅繁琐而且还很耗费时间。其实我们可以使用一些图片批量处理的工具&#xff0c;就可以轻松完成多张图片处理的任…

图片编辑软件哪个好用,易可图轻松处理图片

在我们的日常工作中&#xff0c;不管是设计海报&#xff0c;还是制作宣传图片&#xff0c;往往都少不了专业的美工来设计制作。而大众对于图片的要求也在不断提升&#xff0c;无论是制作海报还是手机壁纸等都需要创意博眼球&#xff0c;就必须对图片进行编辑。尤其是电商的卖家…

html显示多张照片的布局,多图片如何排版?手把手教你多图排版布局

确实,当我们遇到很多图片时,总是容易被排版困住,不知道该如何更好的处理图片布局 不要慌,稿叔今天就和大伙分享我在排版时经常参考的案例,同时还有5个关于排版的技巧以及多图排版神器一并送上,希望能够帮助到你~ 一、多图排版设计案例 1、杂志 没有灵感时,可以多看看一些…

图片如何排版?这波排版技巧请收好

今天要讨论的话题主要是关于点线面分布分析&#xff0c;这部分知识主要是针对空间层面的&#xff0c;学会后真的可以做到任何一张图都能拿来直接做。好啦闲话不多说下面开始今天的内容。 1.图片的疏密 这个方法是我自己思考的&#xff0c;可能严谨性还有待实验&#xff0c;不…

日常图片设计,用这几款软件就够了

已经从事设计行业三年多了&#xff0c;虽然自己并不是主要的设计人员&#xff0c;但是在绘图上面还是需要掌握一些绘图技巧的&#xff0c;所以在软件方面还是有所涉猎。下面就是我们小组团队常用的四款软件&#xff0c;简单介绍分享给大家觉得有用的话可以去试用试用。 亿图图…

ChatGPT如何为企业提供帮助?

数字化转型是指利用技术来改变企业的运营方式并为客户提供价值&#xff0c;这不仅仅是关于如何采用新的技术或工具。要想取得成功&#xff0c;就需要从根本上改变文化和心态。 ChatGPT如何为企业提供帮助?从数据分析到知识管理再到客户服务等等&#xff0c;人工智能聊天机器人…

鲨鱼抓包(Wireshark)简易操作说明

最近用鲨鱼&#xff08;Wireshark&#xff09;抓包&#xff0c;然后同事表示不会用&#xff0c;想了想&#xff0c;干脆动手弄个小说明吧&#xff0c;如是就有了下面的两张图片。 贴在这里用于备忘&#xff0c;也许能帮助到其他小伙伴。

微信小程序app.js 调用pages页面里 指定js里面的方法

在app.js里面的globalData定义参数 之后在apply-voucher.js里面的成功回调函数里面写上 app.globalData.indexJS that 然后在app.js里面的回调函数里面写上 that.globalData.indexJS.方法名即可调用其它页面的方法 例如 that.globalData.indexJS.checkDingYue(codeId) 这样…

小程序使用vant框架的Toast步骤

小程序使用vant框架的Toast步骤 第一步在组件中引用 备注&#xff1a;如果是component组件则需要在父页面中引用在页面写上标签&#xff08;如果在子页面使用&#xff0c;则在父页面写入下面的代码&#xff0c;如果不是组件页面则直接在本页面引入&#xff09; <van-toast…

微信小程序,文字展开、收起组件

// components/collapseCommonLine/collpaseCommonLine.js Component({// 开启插槽功能options: {multipleSlots: true},/*** 组件的属性列表*/properties: {clamp:{// 默认显示行数type:Number,value:1}},/*** 组件的初始数据*/data: {showMore:false,// 是否展开},/*** 组件的…

怎么为typora配置一个可爱的小鲨鱼主题?

小鲨鱼主题 说明 都说用 typora 做笔记&#xff0c;写东西比较方便&#xff0c;这半年用下来确实是如此&#xff0c;比 word 文档在某些方面确实是要方便的不少&#xff0c;然后如果你有一个漂亮的主题&#xff0c;确实是可以促进我们的学习积极性的&#xff1b; 然后我对这个…

【Unity】射击小游戏

鼠标控制人物旋转方向 前言一、准备一些Object二、代码示例1.Player脚本2.PlayerController脚本3.Hierarchy面板 总结 前言 演示 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、准备一些Object 示例&#xff1a;准备Player&#xff0c;Plane&am…

微信小程序swiper禁止手动拖动

先附上官方文档传送门 swiper | 微信开放文档 这是一个微信小程序的遗留问题&#xff0c;因为swiper是有一个allowTouchMove的属性控制&#xff0c;设置为false&#xff0c;则不能通过鼠标或手指选中&#xff0c;上下或左右拖动。 这个问题官方历经几年时间还是没有补上&…