2023/9/9总结

news2025/1/10 3:08:50

nodejs

Node.js 是基于chrome的v8引擎封装,独立执行于JavaScript代码的环境

Node.js环境中没有BOM和DOM

作用:

编写后端程序:提供数据和网页资源等

前端工程化:集成各种开发中使用的工具和技术

fs模块--读写文件

模块:类似于插件,封装了方法/属性

fs模块:封装了于本机文件系统进行交互的,方法/属性

加载  fs  模块对象  const fs = require('fs')

写入文件内容  fs.writeFile('文件路径','文件内容',error=>{})

读取文件内容 fs.readFile('文件路径',(err,data)=>{  //读取后的回调函数,data是文件内容的buffer数据流   })

path 模块  --路径处理

--dirname  内置变量(获取当前模块目录-绝对路径)

path.join()  会使用特定于平台地分隔符,作为定界符,将所有给定地路径片段连接在一起

模块化

定义:CommonJs模块是为Node.js  打包JavaScript 代码的原始方式  Node.js  还支持浏览器和其他JavaScript 运行时使用的ECMAScript  模块标准  在Node.js 中,每个文件都被视为应该单独的模块

  • 概念:项目是由很多个模块文件组成的
  • 好处:提高代码复用性,按需加载,独立作用域
  • 使用:需要标准语法导出和导入进行使用

案例

ECMAScript 标准 -- 默认导出和导入

默认标准使用:

导出   export  default { }

导入   import 变量名 from ‘模块名或者路径’

Node.js默认支持CommonJs标准语法,如果需要使用ECMAScript   标准语法,在运行模块所在文件夹新建package.json文件,并且设置{“type”:"module"}

ECMAScript标准  --  命名导出和导入

命名标准使用

导出  export 修饰定义语句

导入  import {同名变量} from ‘模块名或者路径’

包的概念

包:将模块、代码、其他资料聚合成一个文件夹

  • 项目包:主要用于编写项目和业务逻辑
  • 软件包:封装工具和方法进行使用

根目录中,必须有package.json文件   导入软件包时,引入的默认时index.js 模块文件 / main 属性指定的模块文件

npm 

是Node.js  标准的软件包管理器  它的起初是作为 下载和管理 Node.js  包依赖的方式,现在语句成为前端JavaScript 中使用的工具

  • 初始化清单文件: npm init -y(得到package.json文件,如果有则略过此命令)
  • 下载软件包  : npm i 软件包名称
  • npm --  全局软件包  nodemon

本地软件包  当前项目内使用,封装属性和方法  存在于  node_modules

全局软件包  本机所有项目使用,封装命令和工具,存在于系统设置的位置

nodemon 作用:替代node命令  检测代码更改 自动重启程序

使用

安装  npm i nodemon -g (-g 代表安装到全局环境中)

运行  nodemon 待执行的目标js文件

Vue

watch 侦听器(监视器)

作用:监视数据变化,执行一些业务逻辑或者异步操作

语法:

  • 简单写法  ----> 简单类型数据直接监视
  • 完整写法  ---->添加额外配置项

接口还是有点问题

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .bigBox
        {
            margin-top: 20px;
            display: flex;
        }
        select
        {
            height: 30px;
            width: 60px;
        }
        .left,.right
        {
            height: 100px;
            width: 200px;

        }
        .right
        {
            box-sizing: border-box;

            background: #eee;
            border: 2px solid skyblue;
        }
        .left textarea
        {
            box-sizing: border-box;
            width: 100%;
            height: 100%;
            resize: none;
            outline: none;
            border: 2px solid skyblue;
            padding: 10px;
        }
    </style>
</head>
<body>
<div id="app">
    <select name="language" id="">
        <option value="English">英语</option>
        <option value="Chinese">中文</option>
        <option value="French">法语</option>
    </select>

    <div class="bigBox">
        <div class="left">
            <textarea name="" v-model="words" placeholder="请输入你想翻译的句子"></textarea>
        </div>
        <div class="right">
            {{ translateWords }}
        </div>
    </div>
</div>

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="js/vue.js"></script>
<script>
<!--    接口地址 -->
    const app=new Vue({
        el:'#app',
        data:{
            words:'',
            translateWords:'',
            timer:null
        },
        watch:{
            words(newValue){
                clearTimeout(this.timer)

                this.timer=setTimeout(()=>{
                    axios({
                        url:'https://translate.appworlds.cn',
                        method:'get',
                        contentType:'application/x-www-form-urlencoded',
                        params:{text:this.words,from:'zh-CN',to:'en'}
                    }).then(result=>{
                        this.translateWords=result.data.data;
                        console.log(result)
                    }).catch(error=>{
                        console.log(error)
                        this.translateWords=error.data
                    })
                },1000)
            }
        }
    })
</script>
</body>
</html>

Vue的生命周期

创建   挂载   更新   销毁

工程化开发  脚手架 Vue CLI

Vue CLI  是Vue  官方提供的一个全局命令工具   可以班助我们快速创建 一个开发Vue项目的标准化基础架子(集成了webpack配置)

安装:需要先安装nodejs 以及 nvm

  1. 在windows Power shell  以 管理员的身份打开  
  2. 全局安装:yarn  global add @vue/cli  或者  npm i @vue/cli -g
  3. 安装后
  4. 查看vue 版本 vue --version  (如果没有 显示版本号,说明你安装出了问题)
  5. 创建项目架子  vue create project-name(这里写你想创建的项目名称,不能有中文)
  6. 启动项目 yarn serve  或者  npm run serve

之后会给出一个地址

访问是这样样子

代表你已经安装好了 

把该文件夹用idea打开

组件化开发  根组件

组件化:一个页面可以拆分成一个个组件,每个组件有自己独立的结构、样式、行为  这样就便于维护,利于复用 从而提升开发效率

根组件  整个应用最上层的组件  包裹所有普通小组件,一个根组件App.vue  包含3个部分 

template  结构

style  样式

script  行为

案例:

结果

普通组件的注册使用

组件注册的俩种方式:

局部注册:只能在注册的组件内使用

  • 创建.vue组件(单文件组件)
  • 使用的组件内导入  并局部注册  components:{  组件名:组件对象  }

案例

全局注册:所有的组件都能使用

  • 创建   .vue  文件
  • main.js  中进行全局注册  Vue.component(组件名:组件对象)

案列:

效果:

组件样式冲突 scoped

写在组件中的样式 会全局生效 因此很容易造成  多个组件之间的样式冲突问题

全局样式   默认组件中的样式会作用到全局

局部样式  可以给组件加上scoped 属性 ,这样样式只作用于当前组件 

scoped原理  

当前组件内标签都被添加  data-v-hash的属性    css选择器都被添加   [data-v-hash值]  的属性选择器  

data

data是一个函数  一个组件的data选项必须是一个函数  保证每个组件实例  维护独立的一份数据对象  

案列

组件通信

就是组件与组件之间的数据传递  

父子关系:props  和  $emit

父组件通过props 将数据传递给子组件

案列;

子组件利用 $emit 通知 父组件修改更新

点击之后

props 校验 

为了组件的prop 指定验证要求 不符合要求  控制台就会有错误提示  

  • 类型校验

  • 非空校验
  • 默认值
  • 自定义校验

非父子关系:provide 或者 inject eventbus

eventBus:

案列:

效果:

provide  和  inject

跨层级共享数据  父组件  project 提供数据   子/孙 组件  inject 取值使用

传递的简单数据类型是  非响应式的   复杂数据类型是  响应式的

效果:

通用方案  Vuex

v-model  原理 

等价于 value属性 和input事件的合写  

表单数据的父子组件双向绑定

v-model  简化

 

.sync  修饰符

作用可以实现子组件 与 父组件数据 的双向绑定  简化代码

特点:prop属性名称  可以自定义 非固定 为value   

适用于封装弹窗类的基础组件  visible 属性 true 显示 false隐藏

效果

点击之后

ref 和 $ref

利用  ref  和  $rer  可以用于 获取  dom  元素 或者组件实例

查找范围:当前组件内

效果

Vue 异步更新 、$nextTick

vue语句都是异步的,很多情况下 可能 这条语句没有执行完 就执行 下一句 为了应对这种情况 使用 $nextTick  来解决

效果

 

点击

确定:

自定义指令

自己定义的指令  可以封装 一些dom 操作  扩展功能  

全局注册

局部注册

指令的值

在绑定指令时  可以通过等于号的形式为指令  绑定 具体的参数值

通过binding.value 可以拿到指令值  指令值会触发 update 函数

需要注意的是:

插槽

让组件内部的一些结构 支持自定义

基本语法:

组件内需要定制 的 结构部分 用slot占位   使用时 <组件名></组件名> 标签内部  传入结构替换slot

 案列:

效果:

也可以给插槽设置默认内容  只需要在slot里面写了  没有传递就会用这个默认内容

具名插槽

如果需要多个位置都有自定义的成分,那么可以使用具名插槽。

多个slot使用name属性区分名字   template 配合 v-slot 名字来分发 对应标签

效果:

作用域插槽

定义slot插槽的同时 是可以传值的,给插槽上可以绑定数据 ,将来 使用组件时可以用

给slot标签,以添加属性的方式传值   所有添加的属性 都会被收集到一个对象中  在template 中,通过   `#插槽名=“obj”`  接收 ,默认插槽名为 default

案列:

渲染的界面

删除和查看功能

单页应用程序 

所有功能在一个html 页面上运行

  • 优点 按需更新性能高  开发效率高  用户体验好
  • 缺点  学习成本高  首屏加载慢  不利于SEO

路由

路由是一种映射关系 在Vue中式 路径和组件的映射关系  根据路由就能知道不同路径  然后去匹配渲染哪个组件

安装vue-router插件

打开终端控制台

输入 npm install vue-router@3   //输入3是因为vue2支持的是3xx版本   如果是vue3  就需要下载4xx的版本

安装后 需要 npm run serve 重新打开服务器 

在main.js中

然后页面地址就变了

上面是创建

使用  创建需要使用的组件(推荐放在views目录) 配置路由规则

效果:

点击可以切换下面的内容

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(LeetCode)两数相加深入分析Java版

两数相加&#xff08;题目如下&#xff09; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数…

华为云云耀云服务器L实例评测 | 开启OPC UA之旅

OPC Unified Architecture (OPC UA)是一种用于工业自动化的M2M协议(Machine-to-machine)&#xff0c;具有平台独立性&#xff0c;在Windows和Linux上都可以运行。随着云服务在工业现场的不断普及&#xff0c;OPCUA服务也开始大量部署在云端。 本文以华为云云耀云服务器L为基础…

Mybatis中动态SQL标签和内置参数介绍

Mybatis中动态SQL标签和内置参数 一、MyBatis动态SQL 1.1、sql标签 sql标签用于抽取公用的SQL代码&#xff0c;定义sql标签的时候需要通过【id】属性设置唯一标识。 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-…

CocosCreator3.8研究笔记(十二)CocosCreator 字体资源理解

Cocos Creator 常用的字体资源有三种&#xff1a;系统字体、动态字体、位图字体。 一、系统字体 系统字体是调用运行平台自带的系统字体来渲染文字&#xff0c;不需要用户在项目中添加任何相关资源。 使用系统字体&#xff0c; Label 组件 Use System Font 属性需要勾选。 Fo…

使用Spring Security保障你的Web应用安全

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

用户权限数据转换为用户组列表(3/3) - Excel PY公式

最近Excel圈里的大事情就是微软把PY塞进了Excel单元格&#xff0c;可以作为公式使用&#xff0c;轻松用PY做数据分析。系好安全带&#xff0c;老司机带你玩一把。 实例需求&#xff1a;如下是AD用户的列表,每个用户拥有该应用程序的只读或读写权限&#xff0c;现在需要创建新的…

迅软DSE文档权限管理:实现受限访问,确保重要机密绝不外泄

在现代办公中&#xff0c;文档已经成为信息存储、使用以及流转的重要载体&#xff0c;这些文档在企业内外共享和流转&#xff0c;期间若是谁都可以对其进行访问、复制、删除、截屏、打印……会给企业的信息安全带来许多隐患。 对文档实行差异化管理已经成为企业机密保护一部分&…

智能小车之蓝牙控制并测速小车、wife控制小车、4g控制小车、语音控制小车

目录 1. 蓝牙控制小车 2. 蓝牙控制并测速小车 3. wifi控制测速小车 4. 4g控制小车 5. 语音控制小车 1. 蓝牙控制小车 使用蓝牙模块&#xff0c;串口透传蓝牙模块&#xff0c;又叫做蓝牙串口模块 串口透传技术&#xff1a; 透传即透明传送&#xff0c;是指在数据的传输过…

【数据结构】堆排序和Top-k问题

【数据结构】堆 堆排序 如果只是将待排数组建立一个大堆或者小堆是无法得到一个升序或者降序的数组&#xff0c;因为对与一个堆&#xff0c;我们没法知道同一层的大小关系。 但是&#xff0c;如果建立了一个大堆&#xff0c;那么堆顶元素一定是这个数组中最大的&#xff0c;…

使用Spring WebSocket实现实时通信功能

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

SpringMVC实现增删改查(CRUD)--从头到尾全面详细讲解

一&#xff0c;实现CRUD前准备工作 1.1 pom.xml依赖的配置 创建Model项目并导入相关pom.xml依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><m…

BIOS < UEFI

Basic Input Output System &#xff08;BIOS&#xff09; Unified Extensible Firmware Interface &#xff08;UEFI&#xff09;

Redis3.2.1如何设置远程连接?允许局域网访问

背景&#xff1a; 电脑A的redis需要开放给电脑B使用&#xff0c;二者处于同一局域网 【后面会补充更详细的踩坑历程&#xff0c;先发出来作为记录】 过程&#xff1a; 在你查了很多方法后&#xff0c;如果还是没有解决&#xff0c; 尝试考虑一下你的redis配置文件是不是修…

Linux安装kibana

相关链接 https://www.elastic.co/cn/downloads/kibana https://artifacts.elastic.co/downloads/kibana/kibana-7.5.1-linux-x86_64.tar.gz 官网下载可能比较慢&#xff0c;下面提供下载地址 百度云链接&#xff1a;https://pan.baidu.com/s/1d9Cqr9EwHF94op90F57bww 提取码…

【EKF】EKF原理

原理简述 卡尔曼滤波可以在线性模型&#xff0c;误差为高斯模型的情况下&#xff0c;对目标状态得出很好的估计效果&#xff0c;但如果系统存在非线性的因素&#xff0c;其效果就没有那么好了。比较典型的非线性函数关系包括平方关系&#xff0c;对数关系&#xff0c;指数关系…

第 2 章 线性表 ( 具有实用意义的线性链表(带头结点)实现)

1. 背景说明 链表中携带尾指针信息能够在插入新结点时提高效率。 2. 示例代码 1) status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H#define CHECK_NULL(pointer) if (!(pointer)) { \printf("FuncName: %-15s Line: %-5d ErrorCo…

Matlab之创建空数组的多种方法汇总

一、matlab空数组是什么&#xff1f; 在MATLAB中&#xff0c;空数组是指没有元素的数组对象。它可以用于占位或者作为容器&#xff0c;等待后续添加元素。 二、创建空数组的多种方法 1、使用空方括号 [] 创建空矩阵 A []; % 创建一个空双精度矩阵 B logical([]); % 创建一…

Unity Shader 溶解带描边

一、效果图 二、原理分析 实现原理就是在片元着色器中&#xff0c;对像素点进行渐进丢弃不显示。借助美术做的噪点图(利用噪点图中rgb中r值来做计算)。比如噪点图r值从0-1。我们从小到大让r值逐渐丢弃&#xff0c;比如刚开始r < 0.1丢弃&#xff0c;然后t < 0.2丢弃...知…

【GO语言基础】控制流

系列文章目录 【Go语言学习】ide安装与配置 【GO语言基础】前言 【GO语言基础】变量常量 【GO语言基础】数据类型 【GO语言基础】控制流 文章目录 系列文章目录条件语句if-else 结构判断一个字符串是否为空&#xff1a;switch结构 循环结构for 循环&#xff08;C风格&#xff…

CSS 实现让最后一排元素向左对齐并且整体要居中的几种方式

背景 好久没写 CSS 了&#xff0c;最近产品提了个样式需求&#xff0c;让列表最后一排的元素要向左对齐&#xff0c;而不是居中分配&#xff0c;如图&#xff1a; 由于项目采用 flex 布局&#xff0c;一开始想到的是直接给容器加个 justify-content: flex-start 看起来确实…