TypeScript2024第3周拓展实训——单词点读机和三人站队推理游戏

2,103 阅读5分钟

在这里我们将通过两个JS案例S1、S2,见识到JS在前端浏览器和后端的工作差异。

S1 单词点读机——哪里不会点哪里

哪里不会点哪里,妈妈再也不用担心的学习。——曾经的小学生学英语点读机广告

图片.png

目标效果

在这里我们通过分析一个在线单词查询网站,使用HTML+JS代码定制我们个性化单词点读机。
其实是有声音的,因为图片无法播放。 声音.gif

技能目标

  • 掌握单词网页URL地址提取和参数分析
  • 学会HTML网页设计和JS捕获页面DOM元素绑定事件
  • 学会使用JS新建子窗口、偏移层叠窗口、一键关闭窗口等功能增加

操作指引

步骤1 在浏览器控制台查看单词URL地址

进入网站有道词典中播放单词读音, 在浏览器使用F12进入控制台模式和网络选项,复制出单词的播放网址。

图片.png

步骤2 分析网址URL并在新的页面访问测试

使用浏览器打开 dict.youdao.com/dictvoice?a… 页面,经过观察 很容易发现这个网址中存在两个参数:
audio=单词 表示需要发音的单词
type=1 其中1表示英式发音,2表示美式发音

图片.png

步骤3 编写基础HTML代码

在文件夹w3中创建文件 S1.html,核心代码如下:

图片.png

步骤4 编写JS代码

4.1 在HTML代码中增加以下代码。其中:

document.querySelectorAll('ul li')获取所有的li元素存入arr.
arr.forEach((one, i) => { }) 循环每一个元素

图片.png

4.2 为每个li对象绑定点击事件打开新的子窗口

图片.png

运行查看HTML网页效果,建议安装Live Server的插件,模仿服务器 运行网站。 图片.png 图片.png

图片.png

步骤5* 功能 子窗口层叠效果

图片.png

步骤6* 功能扩展 一键关闭窗口

关闭.gif

在HTML中增加按钮代码并赋值ID <button id="btn">关闭</button>

图片.png

a69725fa47c4f5bbaaa668552a1669dfddcf6998-1.jpg


S1 爱心扩展作业

目标效果

图片.png

步骤1 复制代码

复制S1.html代码重命名S1爱心.html。在JS代码中插入以下爱心坐标数据:

let n = 0 //窗口 下标
let pointArr = [ //爱心的坐标
    { x: 200, y: 0 },
    { x: 300, y: 0 },
    { x: 500, y: 0 },
    { x: 600, y: 0 },

    { x: 100, y: 100 },
    { x: 400, y: 100 },
    { x: 700, y: 100 },

    { x: 100, y: 200 },
    { x: 700, y: 200 },

    { x: 200, y: 300 },
    { x: 600, y: 300 },

    { x: 200, y: 400 },
    { x: 600, y: 400 },

    { x: 300, y: 500 },
    { x: 400, y: 500 },
    { x: 500, y: 500 },
]

步骤2 修改代码

图片.png

步骤3 替换QQ头像测试效果

图片.png

专业视野

1.计算机专业沟通与表达实训www.bilibili.com/video/BV1eC…

图片.png

2.信息论先驱——香农www.bilibili.com/video/BV1Xo…

v2-368b5c56edc38017484ba5d9dab91aa3_r.webp

TypeScript常用数据类型

在w3中新建文件 TS数据类型.txt

一、核心语法
let 变量名 :数据类型 = 值

二.常见的数据类型
数值(运算)  VS 字符串(文本)
1)数值   number   let a:number = 10000

2)字符串 string   
    let s :string  = '你好'
    let s :string  = "你好"
    let s :string  = `你好`    

3)布尔   boolean 
    let 布尔:boolean =  true
    let 布尔:boolean =  false

4)未定义 undefined 不知道值是什么
    letlet 甲   = undefined 
    
5)空值  null 对象不存在
    let 乙:null
    let 乙:null = null

三、复合数据类型
1)数组 array
    let arr:number[] = [1,2,3]
    let arr:string[] = ['甲','乙','丙']    

2)对象  object
    let 英雄 :object = { name:'陈龙',age :22 }

3)函数 function
    function 函数( 参数:类型 ):返回类型 {  }
    吃饭( 食物:object , 水:object ):boolean {  }


S2 三人站队推理游戏————猜猜他们都是谁

图片.png

操作指引

步骤1 建立S2.ts文件复制以下代码

let arr:string[] = ['刘备','张飞','黄忠','魏延','赵云','诸葛亮','关羽']
 
let str:string = `
    1. ${arr[?]}-${arr[?]}-${arr[?]} 一个姓名正确,位置正确
    2. ${arr[?]}-${arr[?]}-${arr[?]} 一个姓名正确,但是位置不正确
    3. ${arr[?]}-${arr[?]}-${arr[?]} 两个姓名正确,但是位置都不正确
    4. ${arr[?]}-${arr[?]}-${arr[?]} 没有一个姓名正确
    5. ${arr[?]}-${arr[?]}-${arr[?]} 一个姓名正确,但是位置不正确
`;

console.log(str )

根据上图任务的位置,在下方?中填入对应的数组下标。
图片.png 接下来准备运行程序。.ts类型代码需要编译成js代码才可以运行。

步骤2 编译ts代码为js后执行

因为ts代码无法直接运行,我们需要下载 typescript模块(包含tsc编译工具)
ts文件 → 编译 → js文件 图片.png ts文件 → 编译 → js文件

//  第一步 全局安装 typescript 模块
pnpm i -g typescript 
            

图片.png

!!!!在命令行执行
pnpm setup 执行完 pnpm setup 后:
关闭VScode后重启VScode,重复执行以下三步:
关闭VScode后重启VScode,重复执行以下三步:
关闭VScode后重启VScode,重复执行以下三步:

// 第一步 全局安装 typescript 模块
pnpm i -g typescript

//  第二步 使用tsc命令编译当前TS代码 得到最终的的JS代码
tsc S2.ts   

//  第三步 使用 node 运行编译后的JS代码
 node S2.js               

步骤3* 观察对比最终js文件和ts的差异

图片.png

其他参考

1.TypeScript官网

www.typescriptlang.org/zh

2.专业简历

5ad6dd5ffb7b3d3a40ecde7ae0380125_720.png

3.疯狂星期四

图片.png