react 体验 react与vue的比较
用了 vue 大半年了,不过我在2016年暑假的时候就看到了 react 这个项目,学习了一番,不过之前学习的都是基础语法和一些基础用法吧,总的来说 mvvm 框架确实都很相似,会一个就可以了;
今天我的配置 react 的时候,搜索过后,发现很多都是一步一步来配置文件的,不过也有好处可以帮助我理解 webpack ,不过这配置也太慢了,如果没存好,还得再来一遍吗?
当然不是,我找到了快速搭建项目的指令:
1.
npm install -g create-react-app
2.
create-react-app [你想要的项目名称]
3.
如果速度太慢的话,可以使用 cnpm;
到这,项目会自动跳出如下提示:
Inside that directory, you can run several commands: npm start
Starts the development server. npm run build
Bundles the app into static files for production. npm test
Starts the test runner. npm run eject
Removes this tool and copies build dependencies, configuration files
and scripts into the app directory. If you do this, you can’t go back! We suggest that you begin by typing: cd grewer
npm start
基本都很清楚了;
文件结构是这样的:

配置到这基本可以了,有点感冒,后面再更
11.21
首先我想说的是 mvvm 框架真的是很相似,我从最基础的结构开始说;
Vue 和 react 的数据都是存在一个data 里,每一个组件都有一个存储的data,如果不用 vuex 和 redux, 这就是唯一的存储的位置,react 提供了一个函数来修改: setState,而 Vue 是直接修改data
再就是指令,这方面 Vue 的有他的指令,比如 v-on:click="clickMe"可以缩写成@click="clickMe" 而且可以快速绑定键位,比如@keyup.enter="submit",就是绑定了回车键 而react 是直接在组件或者 DOM 上写 onClick={this.clickMe}而且在 事件的传值方面也会麻烦一点,比如 onClick={this.deleteRow.bind(this, id)} 这样传递,而 Vue 的话 可以直接传:@click="submit(data)",感觉方便一点;指令虽然都是语法糖,但是用起来还是更爽一点.
Vue和 react 的传值都是通过props 来传递的 (如果没有其他的插件或框架), 这一点都是差不多的;
再就是最重要的组件.Vue 的组件(我这里只讲es6)一般是一个页面一个组件而且有了新的后缀: page.vue, 他的 HTML,js,css 是写在一个页面中的, style 加上 scoped 的指令 就可以实现该页面单独的 css,一般 script 里都是 template包裹,
当我使用react 的组件时还是比较震惊的因为他的自由度确实比较大,首先一个组件可以是一个 function 也可以是一个 class(这里说的不是 css里的class),比如,当前页面有一个组件:
注意从这里开始,代码里的...(省略号)都表示省略部分代码!
class grewer extends React.Component{
constructor(props){
super(props);
this.state = {}
}
render(){
return <div>Hello!</div>;
}
}
react 的引用组件可以是任何位置的,比如他在当前页面的话:
function LoginButton(props) {
return (
<button onClick={props.onClick}>
Login
</button>
);
}
class www extends React.Component {
...
render(){
return <div>Hello!<LoginButton onClick="this.methods" /></div>;
}
...
}
可以直接就放在上面了,而如果是其他页面,也可以引用,如:
components.js:
class www extends React.Component {...};
export default www;
index.js(主页面):
import Grewer from './components.js';
然后再 render 里写上
<Grewer />
就可以了;
而且这一个components.js 文件可以写成一个组件引用的块,
在 component.js 里写多个 function 或者 class 通过 export default {qq,ww,ee}
而 index.js 页面
import Grewer from './components.js';
后
可以通过
let Q = Grewer.qq
在 render 里写入:
<Q />
也可以这样 :
<Grewer.qq />;
要注意 vue和 react 都强调组件首字母都要大写;
而且我发现 react 可以引用当前组件里的函数当组件,一般来说组件名称写成小写会被认为是 HTML 元素,
但是我这样写
class www extends React.Component {
...
test=()={...}
render(){
return <div><this.test /></div>
}
}
这样是可以成功的,但是我也是感觉怪怪的,首先从规范上来说就是不行的,其次能在当前组件里写出来,为什么不能直接写出来呢,有点多此一举;
这个也只是一项小实验;
然后关于 api ,Vue 确实提供的 api比较多,比如 computed,watch,filters 等等,而 react 就像把函数都放在了 methods 一样,怪不得人们都说 Vue 适合新手,因为他有着规范,某个函数该写在哪里就写在那里,就算水平差,写出来的也还是能看的;
而 react 就不一样了,自由度非常大,正因为这样,也会比较考验使用者的水平;
react 体验 react与vue的比较的更多相关文章
- react router @4 和 vue路由 详解(全)
react router @4 和 vue路由 本文大纲: 1.vue路由基础和使用 2.react-router @4用法 3.什么是包容性路由?什么是排他性路由? 4.react路由有两个重要的属 ...
- 阿里oss上传图片react组件alioss-react,vue组件alioss-vue (不用我先收藏着,后端看下前端处理方法)
1.介绍 最近开发了一个项目,其中需要一个上传图片到阿里云的 oss 上面,就是上传图片到阿里云的 oss 上面. 因为之前开发过 vue 的阿里云 oss 上传,所以直接复制粘 vue 的组件. 因 ...
- React vs Angular vs Vue 2019
React vs Angular vs Vue 看待这三个主流框架给出的想法 Angular is the entire kitchen that gives you all the tools ne ...
- React vs. Angular vs. Vue
原文连接 历史 React是一个用于构建Web应用程序UI组件的JavaScript库. React由Facebook维护,许多领先的科技品牌在其开发环境中使用React. React被Faceboo ...
- 8分钟为你详解React、Angular、Vue三大前端技术
[引言] 当前世界中,技术发展非常迅速并且变化迅速,开发者需要更多的开发工具来解决不同的问题.本文就对于当下主流的前端开发技术React.Vue.Angular这三个框架做个相对详尽的探究,目的是为了 ...
- react router @4 和 vue路由 详解(七)react路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 12.react路由守卫? a.在之前的版本中,React Router 也提供了类似的 ...
- 一次掌握 React 与 React Native 两个框架
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法. 1. 软件开发语言与框架的学习本质 我 ...
- 重谈react优势——react技术栈回顾
react刚刚推出的时候,讲react优势搜索结果是几十页. 现在,react已经慢慢退火,该用用react技术栈的已经使用上,填过多少坑,加过多少班,血泪控诉也不下千文. 今天,再谈一遍react优 ...
- 《React Native 精解与实战》书籍连载「React 与 React Native 简介」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
随机推荐
- JAVA基础-反射
一.反射的介绍 JAVA反射机制是在运行状态中,能够获取任意一个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法.这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制. ...
- iOS 记录近期遇到的几个bug
1. actionSheet与pickerView 不兼容 发生环境:ios 9以上,其他无测试. actionSheet与pickerView在一起使用时,当actionSheet弹出后,紧接着再弹 ...
- 近期面试总结(PHP后端开发工程师)(部分笔试题)
1.字符串"0"在PHP和js中转换为布尔值是false还是true php:false; php 弱语言 '0'和0一样: js:true:字符串除了空字符串('')其他都是tr ...
- sublime Text 正则替换
我遇到一个文章,需要把所有的 (数字) 换为 [数字] 于是我使用 Sublime Text的替换 首先,我们需要打开正则使用"Alt+R" 或打开"Ctrl+h&quo ...
- win10 uwp 保存用户选择文件夹
如果我们每次把临时处理的文件保存,都要让用户选择一次,用户会不会觉得uwp垃圾?如果我们每次打开应用,都从某个文件读取,而这个文件不在应用目录和已知的目录,那么每次都需要用户选择,用户会不会觉得uwp ...
- php中get_headers函数的作用及用法的详细介绍
get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组.如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断 ...
- 使用LINQ TO XML 创建xml文档,以及读取xml文档把内容显示到GridView例子
首先,准备了一个Model类 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- electron 写入注册表 实现开机自启动
windows平台 首先先明确:开机自启动写入注册表的位置,在KEY_CURRENT_USER\Software\\Microsoft\\Windows\\CurrentVersion\\Run 打开 ...
- LeetCode 442. Find All Duplicates in an Array (在数组中找到所有的重复项)
Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others ...
- Python爬虫之爬取慕课网课程评分
BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...