React应用中使用Bootstrap的方法


Posted in Javascript onAugust 15, 2017

前言

本节我们将把bootstrap,font-awesome应用到app中,同时创建一个基本的主页。主要将用到以下包:

  • bootstrap-loader及配合工作的一系列loader:bootstrap-sass(bootstrap3) css-loader node-sass sass-loader style-loader url-loader.具体使用见官方文档
  • postcss-loader autoprefixer:自动添加-webkit-box等前缀
  • react-bootstrap:在react使用bootstrap组件

bootstrap-loader配置

在webpack的entry入口处添加bootstrap的引用

entry: [
    'bootstrap-loader',
  path.resolve(projectRootPath,'src/app.js')
 ]

然后在应用目录下添加.bootstraprc配置文件,对要用到的组件进行选择,怎么配置在官方文档中有非常详细的配置说明及模板。可以直接使用。

然后在webpack的配置文件module.loaders中添加css,woff2,tff等文件的加载功能

loaders:[
 {
  test:/\.js$/,
  exclude:/node_modules/,
  loader:'babel-loader',
  query:{
   presets:['es2015','react','stage-0'],
   plugins:['transform-decorators-legacy']
  }
 },
 {test:/\.css$/,loader:'style!css'},
 { test: /\.scss$/, 
  loader: 'style!css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!postcss-loader!sass?outputStyle=expanded&sourceMap'
 },
 {
  test: /\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  loader: "url?limit=10000"
 },
 {
  test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/,
  loader: 'file'
 } 
]loaders:[
 {
  test:/\.js$/,
  exclude:/node_modules/,
  loader:'babel-loader',
  query:{
   presets:['es2015','react','stage-0'],
   plugins:['transform-decorators-legacy']
  }
 },
 {test:/\.css$/,loader:'style!css'},
 { test: /\.scss$/, 
  loader: 'style!css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!postcss-loader!sass?outputStyle=expanded&sourceMap'
 },
 {
  test: /\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  loader: "url?limit=10000"
 },
 {
  test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/,
  loader: 'file'
 } 
]

最后可以在.bootstraprc中做些css样式的配置,以替换原来的css,这里简单介绍几个:

首先,在src中新建目录theme用于存放所有与css相关的文件

preBootstrapCustomizations

定义一些能变量,可以在app直接使用

preBootstrapCustomizations: ./src/theme/variables.scss

src/theme/variables.scss主要是定义了一些与颜色相关的变量

// 自己定义颜色
$cyan: #33e0ff;
$humility: #777;

// Bootstrap 变量
$brand-primary: darken(#428bca, 6.5%);
$brand-secondary: #e25139;
$brand-success: #5cb85c;
$brand-warning: #f0ad4e;
$brand-danger: #d9534f;
$brand-info: #5bc0de;

$text-color: #333;

$font-size-base: 14px;
$font-family-sans-serif: "Helvetica Neue", Helvetica, sans-serif;

bootstrapCustomizations

自定义样式,在preBootstrapCustomizations加载后,所有可以在其中使用preBootstrapCustomizations定义的变量

appStyles

bootstrap加载后,最后加载里面的样式,这里可以重写一些bootstrap样式

appStyles: ./src/theme/bootstrap.overrides.scss

src/theme/bootstrap.overrides.scss重新定义了一些样式

.navbar-brand {
 position: relative;
 padding-left: 50px;
}

.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
 color: #33e0ff;
 background-color: transparent;
}

应用

打开我们的scr/containers/App/App.js现在添加一个bootstrap样式的导航条吧

这里我们添加了两个文件App.scss(App目录中)样式,图片logo.png(Home目录中),代码我就不贴了,CSS不是我们目的,可以自己在源码中看,非常简单

import React,{Component, PropTypes} from 'react'
import {IndexLink} from 'react-router' //主页路由

import { Navbar, Nav, NavItem } from 'react-bootstrap'; // 导航组件

export default class App extends Component {

 render(){
  const styles = require('./App.scss') //scss的样式
  return(
   <div className={styles.app}>
    <Navbar fixedTop>
     <Navbar.Header>
      <Navbar.Brand> //注意这里,就用了我们重写的navbar-brand
       <IndexLink to="/" activeStyle={{color: '#33e0ff'}}>
        <div className={styles.brand}/>
        <span>React Redux Example</span>
       </IndexLink>
      </Navbar.Brand>
      <Navbar.Toggle/>
     </Navbar.Header>
    </Navbar>
    <div className={styles.appContent}>{this.props.children}</div>
    <div>App footer</div>
   </div>
  )
 }
}

最终效果如图

React应用中使用Bootstrap的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
某人初学javascript的时候写的学习笔记
Dec 30 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
Mar 19 Javascript
js 针对html DOM元素操作等经验累积
Mar 11 Javascript
一个JavaScript处理textarea中的字符成每一行实例
Sep 22 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
JS获取复选框的值,并传递到后台的实现方法
May 30 Javascript
Django使用多数据库的方法
Sep 06 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 Javascript
基于zTree树形菜单的使用实例
Dec 25 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
webpack常用配置总览(小结)
Nov 18 Javascript
JavaScript函数中的this四种绑定形式
Aug 15 #Javascript
详解react使用react-bootstrap当轮子造车
Aug 15 #Javascript
JScript实现表格的简单操作
Aug 15 #Javascript
AngularJS日程表案例详解
Aug 15 #Javascript
jQuery实现菜单栏导航效果
Aug 15 #jQuery
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 #Javascript
JScript实现地址选择功能
Aug 15 #Javascript
You might like
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
JavaScript XML操作 封装类
2009/07/01 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
对python模块中多个类的用法详解
2019/01/10 Python
python的scipy实现插值的示例代码
2019/11/12 Python
Python版中国省市经纬度
2020/02/11 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
护士自我鉴定范文
2013/10/06 职场文书
求职信格式要求
2014/05/23 职场文书
运动会拉拉队口号
2014/06/09 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
民主评议党员总结
2014/10/20 职场文书
信访稳定工作汇报
2014/10/27 职场文书
运动会广播稿300字
2015/08/19 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript