将 JavaScript 理解为具有比较和对比功能的 C++ 编码器
Understanding JavaScript as a C++ coder with compare and contrast
在理解 <> </>
打字稿 html 时遇到麻烦 JavaScript 中的标签,当您使用它们进行面向对象的编程时,例如结构。
下面的 <> </>
空尖括号这样的表达式是什么意思?它是像 <T> <T/>
这样的通用标签吗?为什么 JavaScript 对象函数总是有一个像 html 标签这样的对象输入,而像 return ()
render ()
这样的函数对象总是得到一个使用 html 标签的参数输入喜欢 function ( <tag> </tag> )
吗?在 Java 或 C++ 中,您可以为函数提供输入,例如 function (p1, p2) { ...}
,其中 (p1, p2)
是两个对象 inputs/attributes,可以在函数结构内部进行操作。所以我可以假设 <tag> </tag>
是 Java 脚本函数对象输入的习惯格式结构,其中这些标签用脚本语言定义了一个对象?
在 react js 在线教程的以下代码中,我看到一个新的 MouseTracker
class 组件正在从 React.Component DOM 对象扩展。然后他们说 <Mouse/>
是 MouseTracker class 中的一个新组件,我们刚刚第一次定义时只使用 html 标签,例如 <Mouse/>
,其中 Mouse 是一个 object/component?所以 Java /C++ 中的对象和 JavaScript 中的组件是相似的概念,您可以在其中使用 <Object/>
定义对象组件?我在下面发布了代码块:
class MouseTracker extends React.Component {
render() {
return (
<>
<h1>Move the mouse around!</h1>
<Mouse />
</>
);
}
}
我看到新的对象或组件 class 正在使用
function { <tag attribute: 'x' > < App/> <tag/> }
其中 <App/>
是组件对象。然后 <tag ...> ...< tag/>
是一个函数 props
就像 class 我猜的组件属性?
我是 Java脚本和函数式编程领域的新手。我主要使用 C++(面向对象编程)编写代码。当我尝试通过比较和对比过程学习 JavaScript 以在 reatjs/nodejs 中构建我的 MVP 商业网站时,我试图理解 JavaScript 组件的使用(与 C++ class 对象对比)。例如,
< Mouse/>
是一个组件。然后 class Mouse expends React.Component { }
还使用 constructor()
面向对象的功能定义了一个组件鼠标,就像在 Java/C++ 上所做的那样。然后在 Java 中,您将通过
创建一个新对象的实例
Object name = new Object (p1, p2);
如果Java脚本中有一个假想的鼠标class,你会喜欢
Mouse mouse= new Mouse (p1, p2);
。然后你可以使用 mouse
作为实例。 JavaScript 中的 <Mouse/>
是否意味着 <Mouse/>
是一个 instance/component 对象,就像您在 Java 中使用 mouse
实例一样 Mouse mouse= new Mouse (p1, p2);
?
这些标签不是 javascript。它们是 'React' 特定的,等同于模拟 HTML 片段的 Fragment。从历史上看,在每个 React 组件中,所有内容都必须包含在单个根元素中或像这样的 React 组件(例如使用 < div >):
const MyReactComponent = () => (
<div>
<h1>my code</h1>
<p>hello</p>
</div>
)
这是不允许的,会破坏反应编译器:
它需要一个根包装器
const MyReactComponent = () => (
<h1>my code</h1>
<p>hello</p>
)
尽管您现在可以使用各种编辑器来执行此操作,但它有问题,vscode,linting 规则,proptypes/typescript 或其他通常不使用的:
const MyReactComponent = () => ([
<h1 key="arrayitem1">my code</h1>,
<p key="arrayitem1">hello</p
])
所以问题是 html 旧的 div 错误做法。大量不必要的 div 包装器。片段不是渲染元素,因此浏览器重绘和重新渲染的负担较小。这就是使用 <> 作为包装器的原因。
这就是开发人员使用它的原因:
const MyReactComponent = () => (
<>
<h1>my code</h1>
<p>hello</p>
</>
)
这真的等同于此。是同一个东西:
import {Fragment} from 'react'
const MyReactComponent = () => (
<Fragment>
<h1>my code</h1>
<p>hello</p>
</Fragment>
)
这不是 Javascript 或真实的 HTML。这是一个名为 JSX 的扩展。它允许您模拟添加 HTML 标签,但在幕后是所有 javascript 函数互相调用。由于您使用的是 React,我建议您尝试一下这个 compiler because it will give you a better idea on what React does with JSX tags, and this article,它解释了为什么 React 更喜欢使用 JSX。
在理解 <> </>
打字稿 html 时遇到麻烦 JavaScript 中的标签,当您使用它们进行面向对象的编程时,例如结构。
下面的 <> </>
空尖括号这样的表达式是什么意思?它是像 <T> <T/>
这样的通用标签吗?为什么 JavaScript 对象函数总是有一个像 html 标签这样的对象输入,而像 return ()
render ()
这样的函数对象总是得到一个使用 html 标签的参数输入喜欢 function ( <tag> </tag> )
吗?在 Java 或 C++ 中,您可以为函数提供输入,例如 function (p1, p2) { ...}
,其中 (p1, p2)
是两个对象 inputs/attributes,可以在函数结构内部进行操作。所以我可以假设 <tag> </tag>
是 Java 脚本函数对象输入的习惯格式结构,其中这些标签用脚本语言定义了一个对象?
在 react js 在线教程的以下代码中,我看到一个新的 MouseTracker
class 组件正在从 React.Component DOM 对象扩展。然后他们说 <Mouse/>
是 MouseTracker class 中的一个新组件,我们刚刚第一次定义时只使用 html 标签,例如 <Mouse/>
,其中 Mouse 是一个 object/component?所以 Java /C++ 中的对象和 JavaScript 中的组件是相似的概念,您可以在其中使用 <Object/>
定义对象组件?我在下面发布了代码块:
class MouseTracker extends React.Component {
render() {
return (
<>
<h1>Move the mouse around!</h1>
<Mouse />
</>
);
}
}
我看到新的对象或组件 class 正在使用
function { <tag attribute: 'x' > < App/> <tag/> }
其中 <App/>
是组件对象。然后 <tag ...> ...< tag/>
是一个函数 props
就像 class 我猜的组件属性?
我是 Java脚本和函数式编程领域的新手。我主要使用 C++(面向对象编程)编写代码。当我尝试通过比较和对比过程学习 JavaScript 以在 reatjs/nodejs 中构建我的 MVP 商业网站时,我试图理解 JavaScript 组件的使用(与 C++ class 对象对比)。例如,
< Mouse/>
是一个组件。然后 class Mouse expends React.Component { }
还使用 constructor()
面向对象的功能定义了一个组件鼠标,就像在 Java/C++ 上所做的那样。然后在 Java 中,您将通过
Object name = new Object (p1, p2);
如果Java脚本中有一个假想的鼠标class,你会喜欢
Mouse mouse= new Mouse (p1, p2);
。然后你可以使用 mouse
作为实例。 JavaScript 中的 <Mouse/>
是否意味着 <Mouse/>
是一个 instance/component 对象,就像您在 Java 中使用 mouse
实例一样 Mouse mouse= new Mouse (p1, p2);
?
这些标签不是 javascript。它们是 'React' 特定的,等同于模拟 HTML 片段的 Fragment。从历史上看,在每个 React 组件中,所有内容都必须包含在单个根元素中或像这样的 React 组件(例如使用 < div >):
const MyReactComponent = () => (
<div>
<h1>my code</h1>
<p>hello</p>
</div>
)
这是不允许的,会破坏反应编译器: 它需要一个根包装器
const MyReactComponent = () => (
<h1>my code</h1>
<p>hello</p>
)
尽管您现在可以使用各种编辑器来执行此操作,但它有问题,vscode,linting 规则,proptypes/typescript 或其他通常不使用的:
const MyReactComponent = () => ([
<h1 key="arrayitem1">my code</h1>,
<p key="arrayitem1">hello</p
])
所以问题是 html 旧的 div 错误做法。大量不必要的 div 包装器。片段不是渲染元素,因此浏览器重绘和重新渲染的负担较小。这就是使用 <> 作为包装器的原因。
这就是开发人员使用它的原因:
const MyReactComponent = () => (
<>
<h1>my code</h1>
<p>hello</p>
</>
)
这真的等同于此。是同一个东西:
import {Fragment} from 'react'
const MyReactComponent = () => (
<Fragment>
<h1>my code</h1>
<p>hello</p>
</Fragment>
)
这不是 Javascript 或真实的 HTML。这是一个名为 JSX 的扩展。它允许您模拟添加 HTML 标签,但在幕后是所有 javascript 函数互相调用。由于您使用的是 React,我建议您尝试一下这个 compiler because it will give you a better idea on what React does with JSX tags, and this article,它解释了为什么 React 更喜欢使用 JSX。